Przeglądaj źródła

fix:成飞问题单修改

lupeng 4 miesięcy temu
rodzic
commit
c82331dad6

+ 40 - 0
src/api/order/index.ts

@@ -249,3 +249,43 @@ export function excelWorkOrder(data: object): AxiosPromise<any> {
     data: data,
   });
 }
+
+export function orderLevelList(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/orderLevel/list",
+    method: "post",
+    data: data,
+  });
+}
+
+export function addOrderLevel(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/orderLevel/add",
+    method: "post",
+    data: data,
+  });
+}
+
+export function levelList(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/orderLevel/listLevel",
+    method: "post",
+    data: data,
+  });
+}
+
+export function updateOrderLevel(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/orderLevel/update",
+    method: "post",
+    data: data,
+  });
+}
+
+export function delOrderLevel(data: object): AxiosPromise<any> {
+  return request({
+    url: "/api/v1/orderLevel/del",
+    method: "post",
+    data: data,
+  });
+}

+ 1 - 0
src/store/modules/dictionary.ts

@@ -33,6 +33,7 @@ export const useDictionaryStore = defineStore("dictionaryStore", () => {
     "excel_states",
     "process_state",
     "form_params",
+    "encode_type",
   ];
   const dicts = ref<{ [key: string]: any[] }>({});
 

+ 1 - 7
src/views/base/craftManagement/process/index.vue

@@ -135,13 +135,7 @@ option.value = Object.assign(option.value, {
       prop: "operationCode",
       span: 12,
       search: true,
-      rules: [
-        {
-          required: true,
-          message: "工序编码不能为空",
-          trigger: "blur",
-        },
-      ],
+      display: false,
     },
     {
       label: "工段",

+ 1 - 0
src/views/base/frock/index.vue

@@ -144,6 +144,7 @@ option.value = Object.assign(option.value, {
       width: 130,
       overHidden: true,
       search: true,
+      display: false,
       rules: [
         {
           required: true,

+ 1 - 0
src/views/base/materials/index.vue

@@ -161,6 +161,7 @@ option.value = Object.assign(option.value, {
       width: 130,
       overHidden: true,
       search: true,
+      display: false,
       rules: [
         {
           required: true,

+ 268 - 8
src/views/plan/order/index.vue

@@ -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;
+    }
+  )
+
 });
 
 /** 选择报故单 */

+ 50 - 2
src/views/pro/traceability/index.vue

@@ -1,8 +1,15 @@
 <template>
   <div class="mainContentBox common-layout">
     <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"
+        ></avue-tree>
+      </el-aside>
       <el-aside
-        width="600px"
+        width="400px"
         style="min-height: 800px; max-height: calc(100vh - 200px)"
       >
         <avue-crud
@@ -203,6 +210,7 @@ import FaultCom from "@/views/pro/traceability/components/faultCom.vue";
 import MediaCom from "./components/mediaCom.vue";
 import ExcelCom from "./components/excelCom.vue";
 import TestData from "./components/testData.vue";
+import {orderLevelList} from "@/api/order";
 
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
@@ -216,7 +224,7 @@ const { selectionChange, multipleDelete } = Methords; //选中和批量删除事
 const { checkBtnPerm } = Utils; //按钮权限等工具
 
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
-
+const formTree = ref(null);
 const traceabilityComRef = ref(null);
 const materialsComRef = ref(null);
 const recordComRef = ref(null);
@@ -226,6 +234,41 @@ const faultComRef = ref(null);
 const mediaComRef = ref(null);
 const excelComRef = ref(null);
 const cssjComRef = ref(null);
+const treeData = ref([]);
+const dataDetail = 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;
+  }
+  dataList();
+};
+const treeOption = {
+  addBtn:false,
+  editBtn:false,
+  delBtn:false,
+  formOption: {
+    labelWidth: 100,
+    column: [{
+      label: '层级名称',
+      prop: 'label'
+    }],
+  },
+  props: {
+    labelText: '标题',
+    label: 'label',
+    value: 'value',
+    children: 'children'
+  }
+};
 let defaultTabName = ref("traceabilityComRef");
 //tab页组件
 const tabNameComRef = new Map([
@@ -374,6 +417,11 @@ option.value = Object.assign(option.value, {
 });
 
 onMounted(() => {
+  orderLevelList(dataDetail.value).then(
+      (data)=>{
+        treeData.value=data.data;
+      }
+  )
   dataList();
 });
 </script>

+ 174 - 0
src/views/system/encoded/index.vue

@@ -0,0 +1,174 @@
+<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"
+        @search-change="searchChange"
+        @search-reset="resetChange"
+        @size-change="dataList"
+        @current-change="dataList"
+        @selection-change="selectionChange"
+    >
+      <template #menu-left="{ size }">
+        <el-button
+          :disabled="toDeleteIds.length < 1"
+          type="danger"
+          icon="el-icon-delete"
+          :size="size"
+          @click="multipleDelete"
+          >删除</el-button
+        >
+      </template>
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import {useCommonStoreHook, useDictionaryStore} from "@/store";
+import dictDataUtil from "@/common/configs/dictDataUtil";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+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/sys/encode",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+// checkBtnPerm(ButtonPermKeys.PLAN.BTNS.order_add) :permission="permission"
+// const permission = reactive({
+//   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
+//   addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
+//   editBtn: checkPerm(buttonPermission.PLAN.BTNS.order_edit),
+//   menu: true,
+// });
+const { dicts } = useDictionaryStore();
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  selection: true,
+  span:24,
+  //searchMenuPosition: "right",
+  //searchIcon: false,
+  column: [
+    {
+      label: "编码类型",
+      prop: "encodeType",
+      search: true,
+      dicData: dicts.encode_type,
+      editDisabled: true,
+      type: "select",
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "编码类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "编码前缀",
+      search: true,
+      prop: "prefix",
+      rules: [
+        {
+          required: true,
+          message: "编码前缀不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "拼接年月日",
+      prop: "isYear",
+      type: "select",
+      dicData: [{
+        label: '否',
+        value: 0
+       },
+        {
+        label: '是',
+        value: 1
+      }
+      ],
+      value: 0,
+    },
+    {
+      label: "拼接月份",
+      prop: "isMonth",
+      type: "select",
+      display: false,
+        hide : true,
+      dicData: [{
+        label: '否',
+        value: 0
+      },
+        {
+          label: '是',
+          value: 1
+        }
+      ],
+      value: 0,
+    },
+    {
+      label: "拼接当前日",
+      prop: "isDay",
+      type: "select",
+        hide : true,
+        display: false,
+        dicData: [
+          {
+        label: '否',
+        value: 0
+      },
+        {
+          label: '是',
+          value: 1
+        }
+      ],
+      value: 0,
+    },
+    {
+      label: "补齐长度",
+      prop: "suffixLength",
+      type: "number",
+      min: 1,
+    },
+    {
+      label: "创建人",
+      prop: "creator",
+      display: false,
+    },
+    {
+      label: "创建时间",
+      prop: "created",
+      display: false,
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+</script>