Browse Source

Merge branch 'master' of http://192.168.101.4:3000/jiaxiaoqiang/JG-ADMIN-TEMP

jiaxiaoqiang 1 year ago
parent
commit
b2814d90bb

+ 1 - 1
.env.development

@@ -11,7 +11,7 @@ VITE_APP_BASE_API = '/dev-api'
 # VITE_APP_API_URL = http://vapi.youlai.tech
 # 开发接口地址
 # VITE_APP_API_URL = 'http://192.168.101.4:8078'
-VITE_APP_API_URL = 'http://192.168.101.64:8078'
+VITE_APP_API_URL = 'http://192.168.101.188:8078'
 # VITE_APP_API_URL = 'http://192.168.101.30:8078'  //lup
 #VITE_APP_API_URL = 'http://192.168.101.64:8078'  #hetao
 

+ 9 - 1
src/common/configs/dictDataUtil.ts

@@ -33,8 +33,16 @@ const DictDataUtil = {
     post_type: "post_type",
     //仓库类型
     warehouse_type: "warehouse_type",
+    //仓库出库任务类型
+    warehouse_out_task_type: "warehouse_out_task_type",
+    //仓库任务状态
+    warehouse_task_state: "warehouse_task_state",
     //货位类型
-    storage_location_type: "storage_location_type"
+    storage_location_type: "storage_location_type",
+    //载具类型
+    vehicle_type: "vehicle_type",
+    //载具状态
+    vehicle_state: "vehicle_state"
   },
   EXPAND_FIELD_TABLE: {
     //字段类型

+ 0 - 47
src/common/configs/dictDataUtil.ts~

@@ -1,47 +0,0 @@
-// 所有的字典类型typeCode都要在这里面写。
-
-const DictDataUtil = {
-  request_url:
-    import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dictData/queryByType/",
-  dept_tree_url: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dept/orgTree",
-  TYPE_CODE: {
-    //订单类型
-    plan_order_type: "plan_order_type",
-    //订单优先级
-    plan_order_priority: "plan_order_priority",
-    //订单状态
-    plan_order_state: "plan_order_state",
-    //设备类型
-    device_type: "device_type",
-    //设备状态
-    device_status: "device_status",
-    //设备运行状态
-    device_run_status: "device_run_status",
-    //设备维护频率
-    device_maintenance_cycle: "device_maintenance_cycle",
-    // 工艺路线类型
-    routing_type: "routing_type",
-    //封装方法
-    packaging_method: "packaging_method",
-    //岗位组
-    post_group: "post_group",
-    //岗位类别
-    post_type: "post_type",
-    //仓库类型
-    warehouse_type: "warehouse_type",
-    //货位类型
-    storage_location_type: "storage_location_type"
-  },
-  EXPAND_FIELD_TABLE: {
-    //字段类型
-    expand_field_type: "expand_field_type",
-    //映射表列表
-    expand_table_list: "expand_field_table",
-    //订单计划表
-    plan_order_info: "plan_order_info",
-    //映射字段列表
-    expand_field_list: "expand_field_list",
-  },
-};
-
-export default DictDataUtil;

+ 79 - 55
src/views/base/craftManagement/process/index.vue

@@ -32,7 +32,7 @@
           <template #dropdown>
             <el-dropdown-menu>
               <el-dropdown-item
-                @click="downloadTemplate('/api/v1/plan/order/template')"
+                @click="downloadTemplate('/api/v1/op/baseOperation/template')"
               >
                 <i-ep-download />下载模板
               </el-dropdown-item>
@@ -42,12 +42,12 @@
             </el-dropdown-menu>
           </template>
         </el-dropdown>
-        <el-button
+        <!-- <el-button
           class="ml-3"
           @click="exportData('/api/v1/plan/order/export')"
         >
           <template #icon> <i-ep-download /> </template>导出
-        </el-button>
+        </el-button> -->
       </template>
     </avue-crud>
     <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
@@ -98,7 +98,7 @@ const uploadFinished = () => {
 };
 const importExcelData = () => {
   if (uploadRef.value) {
-    uploadRef.value.show("/api/v1/plan/order/import");
+    uploadRef.value.show("/api/v1/op/baseOperation/import");
   }
 };
 
@@ -116,20 +116,20 @@ const switchOp = [
 option.value = Object.assign(option.value, {
   selection: true,
   column: [
-    {
-      label: "工序OP号",
-      prop: "operationOp",
-      search: true,
-      span: 12,
-      dispaly: false,
-      rules: [
-        {
-          required: true,
-          message: "工序OP号不能为空",
-          trigger: "blur",
-        },
-      ],
-    },
+    // {
+    //   label: "工序OP号",
+    //   prop: "operationOp",
+    //   search: true,
+    //   span: 12,
+    //   dispaly: false,
+    //   rules: [
+    //     {
+    //       required: true,
+    //       message: "工序OP号不能为空",
+    //       trigger: "blur",
+    //     },
+    //   ],
+    // },
     {
       label: "工序名称",
       prop: "operationName",
@@ -316,15 +316,15 @@ option.value = Object.assign(option.value, {
       dicData: switchOp,
       value: 0,
     },
-    {
-      label: "是否外协",
-      prop: "externalCooperation",
-      span: 8,
-	  hide: true,
-      type: "switch",
-      dicData: switchOp,
-      value: 0,
-    },
+   //  {
+   //    label: "是否外协",
+   //    prop: "externalCooperation",
+   //    span: 8,
+	  // hide: true,
+   //    type: "switch",
+   //    dicData: switchOp,
+   //    value: 0,
+   //  },
     {
       label: "是否首检",
       prop: "firstCheck",
@@ -352,24 +352,24 @@ option.value = Object.assign(option.value, {
       dicData: switchOp,
       value: 0,
     },
-    {
-      label: "是否工艺数量",
-      prop: "common",
-      span: 8,
-	  hide: true,
-      type: "switch",
-      dicData: switchOp,
-      value: 0,
-    },
-    {
-      label: "是否分批",
-      prop: "batch",
-      span: 8,
-	  hide: true,
-      type: "switch",
-      dicData: switchOp,
-      value: 0,
-    },
+   //  {
+   //    label: "是否工艺数量",
+   //    prop: "common",
+   //    span: 8,
+	  // hide: true,
+   //    type: "switch",
+   //    dicData: switchOp,
+   //    value: 0,
+   //  },
+   //  {
+   //    label: "是否分批",
+   //    prop: "batch",
+   //    span: 8,
+	  // hide: true,
+   //    type: "switch",
+   //    dicData: switchOp,
+   //    value: 0,
+   //  },
     {
       label: "是否合批",
       prop: "merge",
@@ -378,35 +378,59 @@ option.value = Object.assign(option.value, {
       type: "switch",
       dicData: switchOp,
       value: 0,
+	  //联动隐藏
+	  control:  (val, form) =>{
+	  		  return {
+	  		  	mergeNum: {
+	  		  	  display: val == 1 ? true : false
+	  		  	}
+	  		  }
+	  }
     },
+	{
+	  label: "是否委外",
+	  prop: "outsourcing",
+	  span: 8,
+	  hide: true,
+	  type: "switch",
+	  dicData: switchOp,
+	  // click: ({ column,value }) => {
+		 //  if(value == 0){
+			// console.log('column',column)  
+		 //  }
+	  // },
+	  //联动隐藏
+	  control:  (val, form) =>{
+		  return {
+		  	outTime: {
+		  	  display: val == 1 ? true : false
+		  	}
+		  }
+	  },
+	  value: 0,
+	},
     {
       label: "合批数量",
       prop: "mergeNum",
       span: 5,
 	  hide: true,
-      value: 0,
-    },
-    {
-      label: "是否委外",
-      prop: "outsourcing",
-      span: 8,
-	  hide: true,
-      type: "switch",
-      dicData: switchOp,
+	  display: false,
       value: 0,
     },
     {
       label: "分批数量",
       prop: "batchNum",
       span: 5,
+	  display: false,
 	  hide: true,
       value: 0,
       // slot:true, // 自定义列
     },
     {
-      label: "外时间",
+      label: "外时间",
       prop: "outTime",
       span: 5,
+	  display: false,
 	  hide: true,
       value: 0,
       // slot:true, // 自定义列

+ 17 - 19
src/views/base/materials/columns.ts

@@ -1,12 +1,12 @@
 import { useDictionaryStoreHook } from "@/store";
 const { dicts } = useDictionaryStoreHook();
 export const columns = [
-  { label: "物料编码", prop: "materialCode", search: true ,rules: [{
+  { label: "物料编码", prop: "materialCode", width: 130,overHidden: true,search: true ,rules: [{
       required: true,
       message: "请填写物料编码",
       trigger: "blur"
     }],},
-  { label: "物料名称", prop: "materialName", search: true ,rules: [{
+  { label: "物料名称", prop: "materialName", width: 140,overHidden: true,search: true ,rules: [{
       required: true,
       message: "请填写物料名称",
       trigger: "blur"
@@ -17,6 +17,7 @@ export const columns = [
     search: true,
     filterable: true,
     type: 'select',
+    width: 100,overHidden: true,
     dicData:dicts.material_properties,
     props: { label: "dictLabel", value: "dictValue" },
     rules: [{
@@ -25,7 +26,7 @@ export const columns = [
       trigger: "blur"
     }],
   },
-  { label: "物料规格", prop: "spec", search: true,rules: [{
+  { label: "物料规格", prop: "spec", width: 100,overHidden: true,search: true,rules: [{
       required: true,
       message: "请填写物料规格",
       trigger: "blur"
@@ -50,6 +51,7 @@ export const columns = [
     search: true,
     filterable: true,
     type: "select",
+    width: 100,overHidden: true,
     dicData:dicts.material_level,
     props: { label: "dictLabel", value: "dictValue" },
     rules: [{
@@ -58,7 +60,7 @@ export const columns = [
       trigger: "blur"
     }],
   },
-  { label: "生产厂家", prop: "manufacturer", search: true ,rules: [{
+  { label: "生产厂家", prop: "manufacturer",width: 100,overHidden: true ,rules: [{
       required: true,
       message: "请填写生产厂家",
       trigger: "blur"
@@ -69,6 +71,7 @@ export const columns = [
     search: true,
     filterable: true,
     type: "select",
+    width: 100,overHidden: true,
     dicData:dicts.quality_testing_plan,
     props: { label: "dictLabel", value: "dictValue" },
   },
@@ -78,6 +81,7 @@ export const columns = [
     search: true,
     filterable: true,
     type: "select",
+    width: 100,overHidden: true,
     dicData:dicts.applicable_platforms,
     props: { label: "dictLabel", value: "dictValue" },
     rules: [{
@@ -89,6 +93,7 @@ export const columns = [
     label: "质量等级",
     prop: "qualityLevelDictValue",
     search: true,
+    width: 100,overHidden: true,
     filterable: true,
     type: "select",
     dicData:dicts.quality_grade,
@@ -104,6 +109,7 @@ export const columns = [
     prop: "selectionDictValue",
     search: true,
     filterable: true,
+    width: 100,overHidden: true,
     type: "select",
     dicData:dicts.selection_type,
     props: { label: "dictLabel", value: "dictValue" },
@@ -113,22 +119,18 @@ export const columns = [
     prop: "stageDictValue",
     search: true,
     filterable: true,
+    width: 100,overHidden: true,
     type: "select",
     dicData:dicts.stage,
     props: { label: "dictLabel", value: "dictValue" },
   },
-  { label: "客户型号", prop: "customerModel", search: true },
-  { label: "保质期(天)", prop: "qualityGuaranteePeriod", search: true },
-
-
-
-
-
-
+  { label: "客户型号", prop: "customerModel",width: 100,overHidden: true, search: true },
+  { label: "保质期(天)", prop: "qualityGuaranteePeriod",width: 100,overHidden: true, search: true },
   {
     label: "封装方法",
     prop: "packageDictValue",
     search: true,
+    width: 100,overHidden: true,
     filterable: true,
     type: "select",
     dicData:dicts.packaging_method,
@@ -139,6 +141,7 @@ export const columns = [
     label: "是否工装",
     prop: "frock",
     search: true,
+    width: 90,overHidden: true,
     filterable: true,
     type: "radio", //类型为单选框
     dicData: [
@@ -159,12 +162,7 @@ export const columns = [
       trigger: "blur"
     }],
   },
+  { label: "筛选规范", prop: "selectionSpec",width: 150,overHidden: true, search: true , type: "textarea",span:18},
 
-
-
-
-
-  { label: "筛选规范", prop: "selectionSpec", search: true , type: "textarea",span:18},
-
-  { label: "备注", prop: "remark", type: "textarea", span:18 },
+  { label: "备注", prop: "remark", width: 150,overHidden: true,type: "textarea", span:18 },
 ];

+ 182 - 0
src/views/base/materials/components/choice-item-page.vue

@@ -0,0 +1,182 @@
+<template>
+  <div class="mainContentBox">
+    <avue-crud
+        ref="crudRef"
+        v-model:search="search"
+        v-model="form"
+        :data="data"
+        :option="option"
+        v-model:page="page"
+        @row-click="rowClick"
+        @search-change="searchChange"
+        @search-reset="resetChange"
+        @size-change="dataList"
+        @current-change="dataList"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import {defineProps, ref} from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import { useCommonStoreHook } from "@/store";
+import { useDictionaryStoreHook } from "@/store";
+const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+const { dicts } = useDictionaryStoreHook();
+const test = () => {
+  isShowTable.value = true;
+  tableType.value = tableType.value == 1 ? 2 : 1;
+};
+const props = defineProps({
+  materialCode: {
+    type: String,
+    default: () => {
+      return '';
+    }
+  }
+})
+// 传入一个url,后面不带/
+const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
+  useCrud({
+    src: "/api/v1/base/material",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate } = Utils; //按钮权限等工具
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+const emit = defineEmits(["materialInfo"])
+const rowClick = (row)=>{
+  emit("materialInfo", row)
+}
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: false,
+  search: false,
+  editBtn: false,
+  addBtn: false,
+  viewBtn: false,
+  menu: false,
+  column: [
+    { label: "物料编码",width: 150,overHidden: true, prop: "materialCode", search: true },
+    { label: "物料名称",width: 150,overHidden: true, prop: "materialName", search: true },
+    {
+      label: "物料属性",
+      prop: "attributeDictValue",
+      search: true,
+      width: 120,
+      overHidden: true,
+      type: 'select',
+      dicData:dicts.material_properties,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    { label: "物料规格",width: 120, prop: "spec", search: true},
+    {
+      label: "单位",
+      prop: "unitDictValue",
+      type: "select",
+      dicData:dicts.danwei_type,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "物料级别",
+      prop: "levelDictValue",
+      width: 100,
+      overHidden: true,
+      type: "select",
+      dicData:dicts.material_level,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    { label: "生产厂家",width: 120, overHidden: true,prop: "manufacturer"},
+    {
+      label: "质检方案",
+      prop: "inspectDictValue",
+      width: 120,
+      overHidden: true,
+      type: "select",
+      dicData:dicts.quality_testing_plan,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "适用平台",
+      prop: "applicablePlatformsDictValue",
+      width: 120,
+      type: "select",
+      overHidden: true,
+      dicData:dicts.applicable_platforms,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "质量等级",
+      prop: "qualityLevelDictValue",
+      width: 120,
+      type: "select",
+      overHidden: true,
+      dicData:dicts.quality_grade,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "选用类型",
+      prop: "selectionDictValue",
+      width: 100,
+      overHidden: true,
+      type: "select",
+      dicData:dicts.selection_type,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    {
+      label: "产品阶段",
+      prop: "stageDictValue",
+      search: true,
+      overHidden: true,
+      width: 100,
+      filterable: true,
+      type: "select",
+      dicData:dicts.stage,
+      props: { label: "dictLabel", value: "dictValue" },
+    },
+    { label: "客户型号",width: 100, overHidden: true,prop: "customerModel",  },
+    { label: "保质期(天)",width: 100, overHidden: true,prop: "qualityGuaranteePeriod", },
+    {
+      label: "封装方法",
+      prop: "packageDictValue",
+      width: 100,overHidden: true,
+      type: "select",
+      dicData:dicts.packaging_method,
+      props: { label: "dictLabel", value: "dictLabel" },
+    },
+    {
+      label: "是否工装",
+      prop: "frock",
+      width: 100,
+      type: "radio", //类型为单选框
+      dicData: [
+        {
+          label: "是",
+          value: 1,
+        },
+        {
+          label: "否",
+          value: 0,
+        },
+
+      ],
+      value: 1,
+      rules: [{
+        required: true,
+        message: "是否工装",
+        trigger: "blur"
+      }],
+    },
+    { label: "筛选规范",width: 100,overHidden: true, prop: "selectionSpec", type: "textarea",span:18},
+    { label: "备注",width: 100,overHidden: true, prop: "remark", type: "textarea", span:18 },
+  ],
+});
+
+onMounted(() => {
+  search.value.prodtCode = props.materialCode
+  search.value.enabled = "0"
+  dataList();
+});
+</script>

+ 0 - 115
src/views/base/modeling/production-line/capacity/columns.ts

@@ -1,115 +0,0 @@
-import { useDictionaryStoreHook } from "@/store";
-const { dicts } = useDictionaryStoreHook();
-export const columns = [
-  {
-    label: "物料编号",
-    prop: "materialCode",
-    search: true,
-    rules: [{
-      required: true,
-      message: "请选择物料编号",
-      trigger: "blur"
-    }],
-  },
-  {
-    label: "产能",
-    prop: "capacity",
-    search: true,
-    rules: [{
-      required: true,
-      message: "请填写产能",
-      trigger: "blur"
-    }],
-  },
-  {
-    label: "工位类型",
-    prop: "stationDictValue",
-    search: true,
-    rules: [{
-      required: true,
-      message: "请选择工位类型",
-      trigger: "blur"
-    }],
-    type: 'select',
-    dicData:dicts.station_type,
-    searchClearable: false, //可清空的输入框,默认为true
-    filterable: true, //添加filterable属性即可启用搜索功能
-    props: {
-      label: "dictLabel", // 下拉菜单显示的字段
-      value: "dictValue" // 下拉菜单值的字段
-    },
-  },
-  {
-    label: "工位操作方式",
-    prop: "operateDictValue",
-    rules: [{
-      required: true,
-      message: "请选择工位方式",
-      trigger: "blur"
-    }],
-    type: 'select',
-    dicData:dicts.station_operate_type,
-    props: {
-      label: "dictLabel", // 下拉菜单显示的字段
-      value: "dictValue" // 下拉菜单值的字
-    },
-  },
-  {
-    label: "工位负责人",
-    prop: "manager",
-    rules: [{
-      required: true,
-      message: "请选择工位负责人",
-      trigger: "blur"
-    }],
-    type: 'select',
-    dicUrl:import.meta.env.VITE_APP_BASE_API+"/api/v1/sys/user/list",
-    dicMethod:"post",
-    props: {
-      label: "userName", // 下拉菜单显示的字段
-      value: "userName" // 下拉菜单值的字段
-    },
-  },
-  {
-    label: "所属产线",
-    prop: "productionLineName",
-    display:false
-  },
-  {
-    label: "工位地址",
-    prop: "position",
-    rules: [{
-      required: true,
-      message: "请填写工位地址",
-      trigger: "blur"
-    }],
-  },
-  {
-    label: "工位IP地址",
-    prop: "stationIp",
-    rules: [{
-      required: true,
-      message: "请填写工位IP地址",
-      trigger: "blur",
-    }],
-
-  },
-  {
-    label: "工位描述",
-    prop: "remark",
-    type: 'textarea',
-    span: 24,
-  },
-  {
-    label: "创建人",
-    prop: "creator",
-    display:false
-  },
-  {
-    label: "创建时间",
-    prop: "created",
-    display:false
-  },
-]
-
-

+ 0 - 6
src/views/base/modeling/production-line/capacity/index.vue

@@ -1,6 +0,0 @@
-<template>
-  <avue-form ref="formRef"
-             :option="option"
-             v-model="form"
-             @submit="handleSubmit"></avue-form>
-</template>

+ 197 - 0
src/views/base/modeling/production-line/components/capacity-page.vue

@@ -0,0 +1,197 @@
+<template>
+
+
+  <div class="mainContentBox">
+    <avue-form
+      ref="formRef"
+      v-model="form"
+      :option="option"
+      @submit="rowSave"
+    >
+
+    </avue-form>
+    <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"
+      search-option="false"
+    >
+      <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>
+    <CommonTable
+      ref="ctableRef"
+      tableTitle="物料列表"
+      tableType="MARTERIAL"
+      @selected-sure="onSelectedFinish"
+    />
+  </div>
+
+</template>
+<script setup lang="ts">
+  import { ref, getCurrentInstance } from "vue";
+  import { useCrud } from "@/hooks/userCrud";
+  import ButtonPermKeys from "@/common/configs/buttonPermission";
+  import { useCommonStoreHook } from "@/store";
+
+  const { isShowTable, tableType } = toRefs(useCommonStoreHook());
+  import { useDictionaryStoreHook } from "@/store";
+  import { columns } from "./columns";
+  import {
+    addStationDevice,
+  } from "@/api/station";
+  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/base/capacity",
+    });
+  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,
+  // });
+  function rowSave(form,done,loading) {
+    console.info(form);
+    createRow(form,done,loading);
+
+  }
+  const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+  onMounted(() => {
+    // console.log("crudRef", crudRef)
+    dataList();
+  });
+
+  /**
+   * 上传excel相关
+   */
+  const uploadRef = ref(null);
+  const uploadFinished = () => {
+    // 上传完成后的刷新操作
+    page.currentPage = 1;
+    dataList();
+  };
+  const importExcelData = () => {
+    if (uploadRef.value) {
+      uploadRef.value.show("/api/v1/base/stationDevice");
+    }
+  };
+  const ctableRef=ref(null);
+  const deviceList=()=>{
+    ctableRef.value.startSelect();
+  }
+  // 设置表格列或者其他自定义的option
+  option.value = Object.assign(option.value, {
+    selection: true,
+    labelWidth: 200,
+    span: 20,
+    column: [{
+      label: "物料编号",
+      prop: "materialCode",
+      display:false,
+    },
+      {
+        label: "物料名称",
+        prop: "materialName",
+        rules: [{
+          required: true,
+          message: "请选择物料名称",
+          trigger: "blur"
+        }],
+        click: ({ value, column }) => {
+          ctableRef.value.startSelect();
+
+        },
+      },
+      {
+        label: "产线",
+        prop: "productionLineName",
+        display:false,
+      },
+      {
+        label: "产线id",
+        prop: "productionLineId",
+        display:false,
+        hide:true
+      },
+      {
+        label: "产能",
+        prop: "capacity",
+        type:"number",
+        rules: [{
+          required: true,
+          message: "请填写产能",
+          trigger: "blur"
+        }],
+      },
+      {
+        label: "最小齐套数",
+        prop: "minCapacity",
+        type:"number",
+        rules: [{
+          required: true,
+          message: "请填写产能",
+          trigger: "blur"
+        }],
+      },],
+    delBtn: false,
+    editBtn: false,
+    viewBtn: false,
+    addBtn:false,
+    menu: false,
+  });
+  const props = defineProps({
+    productionLineId: {
+      type: Number,
+      default: () => {
+        return 0;
+      }
+    }
+  })
+
+  watch?.(
+    () => props.productionLineId,
+    (newVal: string) => {
+      search.value.productionLineId = newVal
+      dataList()
+    }
+  );
+  const onSelectedFinish=(selectedValue)=>{
+
+    form.value.materialCode=selectedValue.materialCode;
+    form.value.materialName=selectedValue.materialName;
+
+    form.value.productionLineId=props.productionLineId;
+  }
+</script>
+

+ 51 - 0
src/views/base/modeling/production-line/components/columns.ts

@@ -0,0 +1,51 @@
+import { useDictionaryStoreHook } from "@/store";
+const { dicts } = useDictionaryStoreHook();
+export const columns = [
+  {
+    label: "物料编号",
+    prop: "materialCode",
+    hide:true,
+    display:false
+  },
+  {
+    label: "物料名称",
+    prop: "materialName",
+    rules: [{
+      required: true,
+      message: "请选择物料名称",
+      trigger: "blur"
+    }],
+    click: ({ value, column }) => {
+      if(column.boxType){
+        dialog.visible = true
+      }
+    },
+  },
+  {
+    label: "产线",
+    prop: "productionLineName",
+    hide:true,
+    display:false
+  },
+  {
+    label: "产能",
+    prop: "capacity",
+    rules: [{
+      required: true,
+      message: "请填写产能",
+      trigger: "blur"
+    }],
+  },
+  {
+    label: "最小齐套数",
+    prop: "minCapacity",
+    rules: [{
+      required: true,
+      message: "请填写产能",
+      trigger: "blur"
+    }],
+  },
+
+]
+
+

+ 15 - 2
src/views/base/modeling/production-line/index.vue

@@ -34,6 +34,14 @@
         >产能</el-button>
       </template>
     </avue-crud>
+    <el-dialog
+      v-model="dialog.visible"
+      :title="dialog.title"
+      width="900px"
+      @close="dialog.visible = false"
+    >
+      <capacity-page  :productionLineId="productionLine.id"/>
+    </el-dialog>
   </div>
 </template>
 <script setup>
@@ -47,7 +55,10 @@
     isShowTable.value = true;
     tableType.value = tableType.value == 1 ? 2 : 1;
   };
-
+  const dialog = reactive({
+    title: "产能",
+    visible: false,
+  });
   // 传入一个url,后面不带/
   const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
     useCrud({
@@ -86,8 +97,10 @@
       uploadRef.value.show("/api/v1/plan/order/import");
     }
   };
+  const productionLine=ref(null);
   const binding=(row)=>{
-
+    productionLine.value=row;
+    dialog.visible=true;
   }
   // 设置表格列或者其他自定义的option
   option.value = Object.assign(option.value, {

+ 6 - 6
src/views/base/modeling/station/columns.ts

@@ -3,7 +3,7 @@ const { dicts } = useDictionaryStoreHook();
 export const columns = [
   {
     label: "工位编号",
-    prop: "code",
+    prop: "stationCode",
     search: true,
     rules: [{
       required: true,
@@ -40,11 +40,11 @@ export const columns = [
     },
   },
   {
-    label: "工位操作方式",
+    label: "操作方式",
     prop: "operateDictValue",
     rules: [{
       required: true,
-      message: "请选择工位方式",
+      message: "操作方式",
       trigger: "blur"
     }],
     type: 'select',
@@ -55,11 +55,11 @@ export const columns = [
     },
   },
   {
-    label: "工位负责人",
+    label: "负责人",
     prop: "manager",
     rules: [{
       required: true,
-      message: "请选择工位负责人",
+      message: "请选择负责人",
       trigger: "blur"
     }],
     type: 'select',
@@ -85,7 +85,7 @@ export const columns = [
     }],
   },
   {
-    label: "工位IP地址",
+    label: "IP地址",
     prop: "stationIp",
     rules: [{
       required: true,

+ 6 - 2
src/views/base/modeling/station/components/columns.ts

@@ -18,11 +18,11 @@ export const columns = [
   },
   {
     label: "设备类型",
-    prop: "device_type",
+    prop: "deviceType",
     search: true,
     rules: [{
       required: true,
-      message: "请选择工位类型",
+      message: "请选择设备类型",
       trigger: "blur"
     }],
     type: 'select',
@@ -34,6 +34,10 @@ export const columns = [
       value: "dictValue" // 下拉菜单值的字段
     },
   },
+  {
+    label: "规格",
+    prop: "specifications",
+  },
 ]
 
 

+ 0 - 2
src/views/base/modeling/station/components/station-page.vue

@@ -128,7 +128,6 @@
   watch?.(
     () => props.stationId,
     (newVal: string) => {
-      alert(newVal)
       search.value.stationId = newVal
       dataList()
     }
@@ -146,7 +145,6 @@
             message: data.msg,
             type: "success",
           });
-          router.back();
         }
         else {
           ElMessage({

+ 19 - 10
src/views/plan/order/components/order-page.vue

@@ -63,36 +63,42 @@ option.value = Object.assign(option.value, {
       label: "订单编号",
       prop: "orderCode",
       search: true,
-      width: "125",
+      width: 120,
+      overHidden: true,
       display: false,
     },
     {
       label: "订单名称",
       prop: "orderName",
       search: true,
-      width: "100",
+      width: 150,
+      overHidden: true,
     },
     {
       label: "ERP号",
       prop: "erpCode",
       search: true,
-      width: "100",
+      width: 120,
+      overHidden: true,
     },
     {
       label: "产品编码",
       prop: "materialCode",
       search: true,
-      width: "100",
+      width: 120,
+      overHidden: true,
     },
     {
       label: "产品名称",
       prop: "materialName",
       search: true,
-      width: "100",
+      width: 130,
+      overHidden: true,
     },
     {
       label: "产品规格",
-      width: "100",
+      width: 130,
+      overHidden: true,
       prop: "materialModel",
     },
     {
@@ -162,7 +168,8 @@ option.value = Object.assign(option.value, {
     {
       label: "所属公司",
       prop: "companyId",
-      width: "100",
+      width: 130,
+      overHidden: true,
       type: "select", //类型为下拉选择框
       dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dept/orgList",
       props: {
@@ -172,7 +179,8 @@ option.value = Object.assign(option.value, {
     },
     {
       label: "项目号",
-      width: "100",
+      width: 130,
+      overHidden: true,
       prop: "projectCode",
     },
     {
@@ -195,7 +203,8 @@ option.value = Object.assign(option.value, {
     {
       label: "备注",
       prop: "remark",
-      width: "100",
+      width: 130,
+      overHidden: true,
       minRows: 2, //最小行/最小值
       type: "textarea", //类型为多行文本域框
       maxlength: 512, //最大输入长度
@@ -203,7 +212,7 @@ option.value = Object.assign(option.value, {
     {
       label: "创建时间",
       prop: "created",
-      width: "140",
+      width: 140,
       overHidden: true,
       type: "datetime",
       valueFormat: "yyyy-MM-dd HH:mm:ss",

+ 65 - 19
src/views/plan/order/index.vue

@@ -5,6 +5,7 @@
       :option="option"
       v-model:page="page"
       v-model:search="search"
+        v-model="form"
       :table-loading="loading"
       :permission="permission"
       @search-change="handleQuery"
@@ -50,7 +51,14 @@
         </el-button>
       </template>
     </avue-crud>
-
+    <el-dialog
+        v-model="dialog1.visible"
+        :title="dialog1.title"
+        width="950px"
+        @close="dialog1.visible = false"
+    >
+      <choice-item-page @materialInfo="materialInfo"/>
+    </el-dialog>
     <el-dialog
       v-model="dialog.visible"
       :title="dialog.title"
@@ -114,6 +122,7 @@ import {
   getExpandAlias,
 } from "@/api/order";
 import {ref} from "vue";
+import ChoiceItemPage from "@/views/base/materials/components/choice-item-page.vue";
 
 // 弹窗对象
 const dialog = reactive({
@@ -134,6 +143,16 @@ const importData = reactive({
   file: undefined,
   fileList: [],
 });
+const materialInfo = (value) => {
+  form.value.materialCode = value.materialCode
+  form.value.materialName = value.materialName
+  form.value.materialModel = value.spec
+  dialog1.visible = false
+}
+const dialog1 = reactive({
+  title: "物料选择",
+  visible: false,
+});
 const permission = reactive({
   delBtn: checkPerm(buttonPermission.PLAN.BTNS.order_del),
   addBtn: checkPerm(buttonPermission.PLAN.BTNS.order_add),
@@ -160,14 +179,16 @@ option.value = {
       label: "订单编号",
       prop: "orderCode",
       search: true,
-      width: "125",
+      width: 130,
+      overHidden: true,
       display: false,
     },
     {
       label: "订单名称",
       prop: "orderName",
       search: true,
-      width: "100",
+      width: 150,
+      overHidden: true,
       rules: [
         {
           required: true,
@@ -180,7 +201,8 @@ option.value = {
       label: "ERP号",
       prop: "erpCode",
       search: true,
-      width: "100",
+      width: 130,
+      overHidden: true,
       rules: [
         {
           required: true,
@@ -193,7 +215,8 @@ option.value = {
       label: "产品编码",
       prop: "materialCode",
       search: true,
-      width: "100",
+      width: 130,
+      overHidden: true,
       rules: [
         {
           required: true,
@@ -201,26 +224,40 @@ option.value = {
           trigger: "trigger",
         },
       ],
-      focus: ({ value, column }) => {
-        //todo
+      click: ({ value, column }) => {
+        if(column.boxType){
+          dialog1.visible = true
+        }
       },
     },
     {
       label: "产品名称",
       prop: "materialName",
       search: true,
-      width: "100",
+      width: 130,
+      overHidden: true,
+      rules: [
+        {
+          required: true,
+          message: "产品名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+      disabled: true,
     },
     {
       label: "产品规格",
-      width: "100",
+      width: 130,
+      overHidden: true,
+      disabled: true,
       prop: "materialModel",
     },
     {
       label: "订单状态",
       prop: "orderState",
       display: false,
-      width: "100",
+      width: 100,
+      overHidden: true,
       type: "select", //类型为下拉选择框
       dicUrl:
         dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_state,
@@ -235,7 +272,8 @@ option.value = {
       label: "订单类型",
       prop: "orderType",
       type: "select", //类型为下拉选择框
-      width: "100",
+      width: 100,
+      overHidden: true,
       dicUrl: dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_type,
       props: {
         label: "dictLabel",
@@ -255,7 +293,8 @@ option.value = {
       label: "订单数量",
       prop: "orderNum",
       type: "number",
-      width: "100",
+      width: 100,
+      overHidden: true,
       min: 1,
       max: 99999,
       rules: [
@@ -269,13 +308,15 @@ option.value = {
     {
       label: "排产数量",
       prop: "scheduledNum",
-      width: "100",
+      width: 100,
+      overHidden: true,
       display: false,
     },
     {
       label: "优先级",
       prop: "priority",
-      width: "100",
+      width: 100,
+      overHidden: true,
       type: "select", //类型为下拉选择框
       dicUrl:
         dictDataUtil.request_url + dictDataUtil.TYPE_CODE.plan_order_priority,
@@ -297,7 +338,8 @@ option.value = {
       label: "交付日期",
       prop: "deliverTime",
       type: "date",
-      width: "100",
+      width: 100,
+      overHidden: true,
       format: "YYYY-MM-DD", //前端展示格式
       valueFormat: "YYYY-MM-DD", //设置后端接收的日期格式
       rules: [
@@ -311,7 +353,8 @@ option.value = {
     {
       label: "所属公司",
       prop: "companyId",
-      width: "100",
+      width: 100,
+      overHidden: true,
       type: "select", //类型为下拉选择框
       dicUrl: import.meta.env.VITE_APP_BASE_API + "/api/v1/sys/dept/orgList",
       props: {
@@ -328,7 +371,8 @@ option.value = {
     },
     {
       label: "项目号",
-      width: "100",
+      width: 100,
+      overHidden: true,
       prop: "projectCode",
     },
     {
@@ -351,7 +395,8 @@ option.value = {
     {
       label: "备注",
       prop: "remark",
-      width: "100",
+      width: 100,
+      overHidden: true,
       minRows: 2, //最小行/最小值
       type: "textarea", //类型为多行文本域框
       maxlength: 512, //最大输入长度
@@ -383,7 +428,8 @@ const queryExpandAlias = () => {
           option.value.column.push({
             label: item.label,
             prop: item.field,
-            width: "100",
+            width: 100,
+            overHidden: true,
           });
         });
       }

+ 175 - 0
src/views/storage/alarm/index.vue

@@ -0,0 +1,175 @@
+<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 } 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/wms/alarm",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: true,
+  column: [
+    {
+      label: "仓库编码",
+      prop: "houseNo",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "仓库编码不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "物料编码",
+      prop: "code",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "物料编码不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "物料名称",
+      prop: "name",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "物料名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "最小库存",
+      prop: "min",
+      type: "number",
+      min: 0,
+      max: 999999,
+      rules: [
+        {
+          required: true,
+          message: "最小安全库存不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "最大库存",
+      prop: "max",
+      type: "number",
+      min: 0,
+      max: 999999,
+      rules: [
+        {
+          required: true,
+          message: "最大安全库存不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "单位",
+      prop: "unit",
+    },
+    {
+      label: "状态",
+      prop: "state",
+      type: "select",
+      dicData: [{label: '启用' , value: 0},{label: '禁用' , value: 1}],
+      html: true,
+      formatter: (val) => {
+        if (val.state === 0) {
+          return '<b class="el-tag el-tag--success el-tag--light">启用</b>';
+        }
+        return '<b class="el-tag el-tag--danger el-tag--light">禁用</b>';
+      },
+      rules: [
+        {
+          required: true,
+          message: "状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "创建时间",
+      prop: "created",
+      width: 180,
+      display: false
+    },
+    {
+      label: "创建人",
+      prop: "creator",
+      display: false
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+</script>

+ 133 - 0
src/views/storage/inTask/index.vue

@@ -0,0 +1,133 @@
+<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"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } 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/wms/task",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: false,
+  viewBtn: false,
+  editBtn: false,
+  menu: false,
+  addBtn: false,
+  column: [
+    {
+      label: "入库单号",
+      prop: "taskNo",
+      search: true,
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "计划单号",
+      prop: "planNo",
+      search: true,
+    },
+    {
+      label: "物料编号",
+      width: 130,
+      overHidden: true,
+      prop: "materialNo",
+    },
+    {
+      label: "物料名称",
+      width:150,
+      overHidden: true,
+      prop: "materialName",
+    },
+    {
+      label: "批次号",
+      prop: "batchCode",
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "入库总数量",
+      prop: "num",
+    },
+    {
+      label: "已入库数量",
+      prop: "completedNum",
+    },
+    {
+      label: "待入库数量",
+      prop: "unDoNum",
+    },
+    {
+      label: "单位",
+      prop: "unit",
+    },
+    {
+      label: "入库仓库",
+      prop: "houseType",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      }
+    },
+    {
+      label: "状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_task_state,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      }
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  search.value.type = '1'
+  dataList();
+});
+</script>

+ 133 - 0
src/views/storage/outTask/index.vue

@@ -0,0 +1,133 @@
+<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"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } 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/wms/task",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: false,
+  viewBtn: false,
+  editBtn: false,
+  menu: false,
+  addBtn: false,
+  column: [
+    {
+      label: "出库单号",
+      prop: "taskNo",
+      search: true,
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "计划单号",
+      prop: "planNo",
+      search: true,
+    },
+    {
+      label: "物料编号",
+      width: 130,
+      overHidden: true,
+      prop: "materialNo",
+    },
+    {
+      label: "物料名称",
+      width:150,
+      overHidden: true,
+      prop: "materialName",
+    },
+    {
+      label: "批次号",
+      prop: "batchCode",
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "出库总数量",
+      prop: "num",
+    },
+    {
+      label: "已出库数量",
+      prop: "completedNum",
+    },
+    {
+      label: "待出库数量",
+      prop: "unDoNum",
+    },
+    {
+      label: "单位",
+      prop: "unit",
+    },
+    {
+      label: "出库类型",
+      prop: "outType",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_out_task_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      }
+    },
+    {
+      label: "状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_task_state,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      }
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  search.value.type = '2'
+  dataList();
+});
+</script>

+ 124 - 0
src/views/storage/returnTask/index.vue

@@ -0,0 +1,124 @@
+<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"
+    >
+    </avue-crud>
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } 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/wms/task",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: false,
+  viewBtn: false,
+  editBtn: false,
+  menu: false,
+  addBtn: false,
+  column: [
+    {
+      label: "退料单号",
+      prop: "taskNo",
+      search: true,
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "计划单号",
+      prop: "planNo",
+      search: true,
+    },
+    {
+      label: "物料编号",
+      width: 130,
+      overHidden: true,
+      prop: "materialNo",
+    },
+    {
+      label: "物料名称",
+      width:150,
+      overHidden: true,
+      prop: "materialName",
+    },
+    {
+      label: "批次号",
+      prop: "batchCode",
+      width:150,
+      overHidden: true
+    },
+    {
+      label: "退料总数量",
+      prop: "num",
+    },
+    {
+      label: "已退料数量",
+      prop: "completedNum",
+    },
+    {
+      label: "待退料数量",
+      prop: "unDoNum",
+    },
+    {
+      label: "单位",
+      prop: "unit",
+    },
+    {
+      label: "关联出库单",
+      prop: "relOutOrderNo",
+    },
+    {
+      label: "状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.warehouse_task_state,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      }
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  search.value.type = '3'
+  dataList();
+});
+</script>

+ 88 - 45
src/views/storage/stock/index.vue

@@ -27,6 +27,14 @@
         >
       </template>
     </avue-crud>
+    <el-dialog
+        v-model="dialog1.visible"
+        :title="dialog1.title"
+        width="950px"
+        @close="dialog1.visible = false"
+    >
+      <choice-item-page @materialInfo="materialInfo"/>
+    </el-dialog>
     <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
   </div>
 </template>
@@ -46,24 +54,60 @@ const test = () => {
 // 传入一个url,后面不带/
 const { form, data, option, search, page, toDeleteIds, Methords, Utils } =
   useCrud({
-    src: "/api/v1/wms/position",
+    src: "/api/v1/wms/stock",
   });
 const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
 const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
 const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
 
 const crudRef = ref(null); //crudRef.value 获取avue-crud对象
-
+const dialog1 = reactive({
+  title: "物料选择",
+  visible: false,
+});
+const materialInfo = (value) => {
+  form.value.materialCode = value.materialCode
+  form.value.materialName = value.materialName
+  form.value.materialModel = value.spec
+  form.value.unit = value.unitDictValue
+  dialog1.visible = false
+}
 // 设置表格列或者其他自定义的option
 option.value = Object.assign(option.value, {
   delBtn: false,
   selection: true,
   column: [
     {
+      label: "入库单号",
+      prop: "taskNo",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "入库单号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "计划单号",
+      prop: "planNo",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "计划单号不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
       label: "仓库编码",
-      prop: "type",
+      prop: "houseType",
       type: "select",
       search: true,
+      width: 90,
+      overHidden: true,
       editDisabled: true,
       dicUrl:
           dictDataUtil.request_url +
@@ -81,78 +125,77 @@ option.value = Object.assign(option.value, {
       ],
     },
     {
-      label: "货区",
-      prop: "area",
+      label: "料箱编号",
+      prop: "vehicleCode",
+      editDisabled: true,
       rules: [
         {
           required: true,
-          message: "货区不能为空",
+          message: "料箱编号不能为空",
           trigger: "trigger",
         },
       ],
     },
     {
-      label: "货位",
+      label: "仓库坐标",
       prop: "coordinate",
-      search: true,
+      editDisabled: true,
       rules: [
         {
           required: true,
-          message: "货位不能为空",
+          message: "仓库位置不能为空",
           trigger: "trigger",
         },
       ],
     },
     {
-      label: "层数",
-      prop: "layer",
-      type: "number",
-      rules: [
-        {
-          required: true,
-          message: "层数不能为空",
-          trigger: "trigger",
-        },
-      ],
+      label: "批次号",
+      width: 120,
+      overHidden: true,
+      prop: "batchCode",
+      search: true
     },
     {
-      label: "货位类型",
-      prop: "materialType",
-      type: "select",
-      dicUrl:
-          dictDataUtil.request_url +
-          dictDataUtil.TYPE_CODE.storage_location_type,
-      props: {
-        label: "dictLabel",
-        value: "dictValue",
+      label: "序列号",
+      width: 130,
+      overHidden: true,
+      prop: "seqNo",
+    },
+    {
+      label: "物料名称",
+      prop: "materialName",
+      width: 130,
+      overHidden: true,
+      click: ({ value, column }) => {
+        if(column.boxType){
+          dialog1.visible = true
+        }
       },
-      rules: [
+      /*rules: [
         {
           required: true,
-          message: "货位类型不能为空",
+          message: "物料名称不能为空",
           trigger: "trigger",
         },
-      ],
+      ],*/
     },
     {
-      label: "状态",
-      prop: "enable",
-      type: "select",
-      dicData: [{label: '启用' , value: 0},{label: '禁用' , value: 1}],
-      html: true,
-      formatter: (val) => {
-        if (val.state === 0) {
-          return '<b class="el-tag el-tag--success el-tag--light">启用</b>';
-        }
-        return '<b class="el-tag el-tag--danger el-tag--light">禁用</b>';
-      },
-      rules: [
+      label: "数量",
+      prop: "num",
+      type: 'number',
+      min: 0,
+      max: 99999
+      /*rules: [
         {
           required: true,
-          message: "状态不能为空",
+          message: "数量不能为空",
           trigger: "trigger",
         },
-      ],
+      ],*/
+    },
+    {
+      label: "单位",
+      prop: "unit",
     },
   ],
 });

+ 185 - 0
src/views/storage/vehicle/index.vue

@@ -0,0 +1,185 @@
+<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>
+    <ExcelUpload ref="uploadRef" @finished="uploadFinished" />
+  </div>
+</template>
+<script setup>
+import { ref, getCurrentInstance } from "vue";
+import { useCrud } from "@/hooks/userCrud";
+import ButtonPermKeys from "@/common/configs/buttonPermission";
+
+import { useCommonStoreHook } 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/wms/vehicle",
+  });
+const { dataList, createRow, updateRow, deleteRow, searchChange, resetChange } = Methords; //增删改查
+const { selectionChange, multipleDelete } = Methords; //选中和批量删除事件
+const { checkBtnPerm, downloadTemplate, exportData } = Utils; //按钮权限等工具
+
+const crudRef = ref(null); //crudRef.value 获取avue-crud对象
+
+// 设置表格列或者其他自定义的option
+option.value = Object.assign(option.value, {
+  delBtn: false,
+  selection: true,
+  column: [
+    {
+      label: "载具编码",
+      prop: "code",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "载具编码不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "载具名称",
+      prop: "name",
+      search: true,
+      rules: [
+        {
+          required: true,
+          message: "载具名称不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "载具类型",
+      prop: "category",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.vehicle_type,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "载具类型不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "容量",
+      prop: "capacity",
+      type: "number",
+      min:  1,
+      max: 99999,
+      rules: [
+        {
+          required: true,
+          message: "容量不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "使用次数",
+      prop: "maxUseNum",
+      type: "number",
+      min:  1,
+      max: 99999,
+      rules: [
+        {
+          required: true,
+          message: "最大使用次数不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "状态",
+      prop: "state",
+      type: "select",
+      search: true,
+      dicUrl:
+          dictDataUtil.request_url +
+          dictDataUtil.TYPE_CODE.vehicle_state,
+      props: {
+        label: "dictLabel",
+        value: "dictValue",
+      },
+      rules: [
+        {
+          required: true,
+          message: "状态不能为空",
+          trigger: "trigger",
+        },
+      ],
+    },
+    {
+      label: "创建时间",
+      prop: "created",
+      display: false
+    },
+    {
+      label: "创建人",
+      prop: "creator",
+      display: false
+    },
+  ],
+});
+
+onMounted(() => {
+  // console.log("crudRef", crudRef)
+  dataList();
+});
+/**
+ * 上传excel相关
+ */
+const uploadRef = ref(null);
+const uploadFinished = () => {
+  // 上传完成后的刷新操作
+  page.currentPage = 1;
+  dataList();
+};
+const importExcelData = () => {
+  if (uploadRef.value) {
+    uploadRef.value.show("/api/v1/device/import");
+  }
+};
+</script>