Browse Source

出入库更改

cz 1 year ago
parent
commit
7a809bf046

+ 2 - 2
src/components/contractCom/contractDetails.vue

@@ -13,9 +13,9 @@
     </el-tabs>
     </el-tabs>
     <div class="content-box" v-if="['first', 'second'].includes(activeName)">
     <div class="content-box" v-if="['first', 'second'].includes(activeName)">
       <div class="left">
       <div class="left">
-        <div style="text-align: center; margin-bottom: 10px" v-if="activeName === 'first'">
+        <!-- <div style="text-align: center; margin-bottom: 10px" v-if="activeName === 'first'">
           <el-button type="primary" @click="openPDF(currentItem)">查看PDF</el-button>
           <el-button type="primary" @click="openPDF(currentItem)">查看PDF</el-button>
-        </div>
+        </div> -->
         <div v-for="i in leftList" :key="i.id" class="left-item" :style="{ color: currentItem.id === i.id ? '#409eff' : '' }"
         <div v-for="i in leftList" :key="i.id" class="left-item" :style="{ color: currentItem.id === i.id ? '#409eff' : '' }"
              @click="handleItemClick(i)">
              @click="handleItemClick(i)">
           <div v-if="activeName === 'first'">{{ i.code }}</div>
           <div v-if="activeName === 'first'">{{ i.code }}</div>

+ 3 - 1
src/components/headerBar/header-bar.vue

@@ -417,7 +417,9 @@ const handleSearchMenu = (val) => {
           if (j.children) {
           if (j.children) {
             j.children.map((n) => {
             j.children.map((n) => {
               if (n.menuName.includes(val) || n.menuName.indexOf(val) != -1) {
               if (n.menuName.includes(val) || n.menuName.indexOf(val) != -1) {
-                arr.push(n);
+                if (n.status == 0 && n.visible == 0 && n.type == 1) {
+                  arr.push(n);
+                }
               }
               }
             });
             });
           }
           }

+ 8 - 4
src/components/notice/index.vue

@@ -126,11 +126,15 @@ const allReadFn = () => {
     }
     }
   )
   )
     .then(() => {
     .then(() => {
-      let arr = [];
-      noticeData.value.filter((item) => {
-        arr.push(item.id);
+      // let arr = [];
+      // noticeData.value.filter((item) => {
+      //   arr.push(item.id);
+      // });
+      // commonRead(arr);
+      proxy.post("/pushInfo/readAll").then((res) => {
+        getPushInfo();
+        proxy.msgTip("操作成功");
       });
       });
-      commonRead(arr);
     })
     })
     .catch(() => {
     .catch(() => {
       ElMessage({
       ElMessage({

+ 2 - 2
src/components/process/SF/Contract.vue

@@ -240,7 +240,7 @@
                 <div style="width:100%">
                 <div style="width:100%">
                   <div style="display:flex">
                   <div style="display:flex">
                     <div style="writing-mode: vertical-rl;margin-right:10px;background:rgb(94 120 145);color:#fff;padding:5px 2px;border-radius:3px;line-height:21px"
                     <div style="writing-mode: vertical-rl;margin-right:10px;background:rgb(94 120 145);color:#fff;padding:5px 2px;border-radius:3px;line-height:21px"
-                         @click="handleClickUploadOne($index)">
+                         @click="handleClickUploadOne($index)" v-if="!judgeStatus()">
                       {{row.isShowProductFile?'上  传  文  件':'取  消  上  传'}}
                       {{row.isShowProductFile?'上  传  文  件':'取  消  上  传'}}
                     </div>
                     </div>
                     <div>
                     <div>
@@ -1777,6 +1777,6 @@ const clickCopy = (type) => {
   min-width: 150px !important;
   min-width: 150px !important;
 }
 }
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
-  background: #fbfbfb !important;
+  background: #f4f4f5 !important;
 }
 }
 </style>
 </style>

+ 1 - 1
src/views/EHSD/saleContract/PriceSheetDetail.vue

@@ -558,6 +558,6 @@ watch(
 }
 }
 
 
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
-  background: #fbfbfb !important;
+  background: #f4f4f5 !important;
 }
 }
 </style>
 </style>

+ 0 - 3
src/views/EHSD/saleContract/priceSheetEHSD/index.vue

@@ -1642,8 +1642,5 @@ const handleSubmitBack = () => {
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
 :deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
   background: #f4f4f5 !important;
   background: #f4f4f5 !important;
 }
 }
-:deep(.bom-table .el-table-fixed-column--right) {
-  // background: #fbfbfb !important;
-}
 </style>
 </style>
 
 

+ 4 - 0
src/views/EHSD/saleContract/priceSheetEstimate/index.vue

@@ -654,4 +654,8 @@ const handleSubmit = (type) => {
   cursor: pointer;
   cursor: pointer;
   vertical-align: middle;
   vertical-align: middle;
 }
 }
+
+:deep(.bom-table .el-table__body-wrapper .el-table__body .el-table__row) {
+  background: #f4f4f5 !important;
+}
 </style>
 </style>

+ 53 - 45
src/views/MES/productionBoard/equipmentCapacity/index.vue

@@ -30,36 +30,7 @@
           生产明细
           生产明细
         </div>
         </div>
         <div class="row-box">
         <div class="row-box">
-          <!-- <div style="width:50%;padding:20px 20px">
-            <table class="table-box">
-              <tr>
-                <td style="width:20%;color:#5D94C6;background:#243B6D;padding:5px 0">
-                  排名
-                </td>
-                <td style="width:40%;color:#5D94C6;background:#243B6D;padding:5px 0" class="hasBorder">
-                  应用系统名称
-                </td>
-                <td style="width:40%;color:#5D94C6;background:#243B6D;padding:5px 0">
-                  CPU使用率(%)
-                </td>
-              </tr>
-              <template v-for="(item,index) in tableData" :key="index">
-                <tr v-if=" index<10">
-                  <td>
-                    {{index+1}}
-                  </td>
-                  <td class="hasBorder">
-                    {{item.label}}
-                  </td>
-                  <td>
-                    {{item.rate}}
-                  </td>
-                </tr>
-              </template>
-
-            </table>
-          </div> -->
-          <div style="width:100%;padding:20px 20px">
+          <div style="width:100%;padding:20px 20px 0px">
             <table class="table-box">
             <table class="table-box">
               <tr>
               <tr>
                 <td style="width:15%;color:#5D94C6;background:#243B6D;padding:5px 0">
                 <td style="width:15%;color:#5D94C6;background:#243B6D;padding:5px 0">
@@ -81,16 +52,16 @@
               <template v-for="(item,index) in tableData" :key="index">
               <template v-for="(item,index) in tableData" :key="index">
                 <tr v-if=" index<10">
                 <tr v-if=" index<10">
                   <td>
                   <td>
-                    {{index+1}}
+                    {{item.name}}
                   </td>
                   </td>
                   <td class="hasBorder">
                   <td class="hasBorder">
-                    {{item.label}}
+                    {{item.label1}}
                   </td>
                   </td>
                   <td>
                   <td>
-                    {{item.rate}}
+                    {{item.label}}
                   </td>
                   </td>
                   <td class="hasBorder">
                   <td class="hasBorder">
-                    {{item.label}}
+                    {{item.productName}}
                   </td>
                   </td>
                   <td>
                   <td>
                     {{item.rate}}
                     {{item.rate}}
@@ -108,6 +79,8 @@
 
 
 <script setup>
 <script setup>
 import * as echarts from "echarts";
 import * as echarts from "echarts";
+import { getMonthBetween } from "@/utils/date.js";
+import moment from "moment";
 
 
 const pie_1 = ref(null);
 const pie_1 = ref(null);
 const pie_2 = ref(null);
 const pie_2 = ref(null);
@@ -125,7 +98,7 @@ const getOption = () => {
   return {
   return {
     title: {
     title: {
       show: true,
       show: true,
-      text: "设备名称:设备1\n当天标刻数量:10\n在线工作时长(分钟):100",
+      text: "设备名称:设备1\n\n当天标刻数量:10\n\n在线工作时长(分钟):100",
       bottom: "-2%",
       bottom: "-2%",
       left: "center",
       left: "center",
       textStyle: {
       textStyle: {
@@ -152,7 +125,7 @@ const getOption = () => {
         // center: ["50%", "50%"],
         // center: ["50%", "50%"],
         radius: ["40%", "65%"],
         radius: ["40%", "65%"],
         top: "0%",
         top: "0%",
-        bottom: "5%",
+        bottom: "20%",
         avoidLabelOverlap: false,
         avoidLabelOverlap: false,
         label: {
         label: {
           show: false,
           show: false,
@@ -206,7 +179,7 @@ const lineOption = reactive({
       type: "category",
       type: "category",
       //设置 boundaryGap 为 true,表示 x 轴在数据点之间有空隙
       //设置 boundaryGap 为 true,表示 x 轴在数据点之间有空隙
       boundaryGap: true,
       boundaryGap: true,
-      data: ["Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun"],
+      data: getMonthBetween(moment().add(-6, "days"), moment()),
       // splitLine: {
       // splitLine: {
       //   lineStyle: {
       //   lineStyle: {
       //     width: 3,
       //     width: 3,
@@ -299,22 +272,56 @@ const lineOption = reactive({
           },
           },
         },
         },
       },
       },
+      {
+        data: [550, 765, 700, 934, 562, 2000, 786],
+        type: "line",
+        smooth: true,
+        name: "3",
+        // 背景颜色
+        // areaStyle: {
+        //   color: "#FCE5CA",
+        //   opacity: 0.4,
+        // },
+        emphasis: {
+          focus: "series",
+        },
+        itemStyle: {
+          normal: {
+            color: "#38bceb", //改变折线点的颜色
+            lineStyle: {
+              color: "#38bceb", //改变折线颜色
+            },
+          },
+        },
+      },
     ],
     ],
   },
   },
 });
 });
 
 
 const tableData = ref([]);
 const tableData = ref([]);
+let codeList = ["YJD8801.01A-A003", "YJD8801.01A-A001", "YJD8801.01A-A002"];
+let codeList1 = [
+  "200*140*0.7cm冰墨蓝Y39+LOGO",
+  "183*90cm*6mm冰墨蓝Y39(激光图案)+忧郁蓝Y49",
+  "183*90cm*6mm艾草绿Y62(激光图案)+爵士黑Y06",
+];
+
 for (let i = 0; i < 15; i++) {
 for (let i = 0; i < 15; i++) {
   tableData.value.push({
   tableData.value.push({
-    label: "集部市场" + (i + 1),
-    rate: (i + 1) * 10 + " %",
+    name: "设备" + (i + 1),
+    label: codeList[i % 3],
+    label1: "SC-202401-055" + i * 2,
+    productName: codeList1[i % 3],
+    rate: i * 3,
   });
   });
 }
 }
 setInterval(() => {
 setInterval(() => {
-  console.log("asdddddd");
   tableData.value.unshift({
   tableData.value.unshift({
-    label: "集部市场" + (Math.floor(Math.random() * 100) + 1),
-    rate: (1 + Math.floor(Math.random() * 100)) * 10 + " %",
+    name: "设备" + (Math.floor(Math.random() * 100) + 1),
+    label: codeList[Math.floor(Math.random() * 3)],
+    label1: "SC-202401-055" + (Math.floor(Math.random() * 100) + 1),
+    productName: codeList1[Math.floor(Math.random() * 3)],
+    rate: (1 + Math.floor(Math.random() * 100)) * 10,
   });
   });
 }, 3000);
 }, 3000);
 onMounted(() => {
 onMounted(() => {
@@ -328,7 +335,7 @@ onMounted(() => {
 
 
   option2 = getOption();
   option2 = getOption();
   option2.title.text =
   option2.title.text =
-    "设备名称:设备2\n当天标刻数量:1\n在线工作时长(分钟):50";
+    "设备名称:设备2\n\n当天标刻数量:1\n\n在线工作时长(分钟):50";
   option2.series[0].data[0].value = 600;
   option2.series[0].data[0].value = 600;
   option2.series[0].data[1].value = 900;
   option2.series[0].data[1].value = 900;
   pie_2Chart = echarts.init(pie_2.value);
   pie_2Chart = echarts.init(pie_2.value);
@@ -340,7 +347,7 @@ onMounted(() => {
 
 
   option3 = getOption();
   option3 = getOption();
   option3.title.text =
   option3.title.text =
-    "设备名称:设备3\n当天标刻数量:20\n在线工作时长(分钟):200";
+    "设备名称:设备3\n\n当天标刻数量:20\n\n在线工作时长(分钟):200";
   option3.series[0].data[0].value = 1300;
   option3.series[0].data[0].value = 1300;
   option3.series[0].data[1].value = 200;
   option3.series[0].data[1].value = 200;
   pie_3Chart = echarts.init(pie_3.value);
   pie_3Chart = echarts.init(pie_3.value);
@@ -388,10 +395,11 @@ onMounted(() => {
       .row-box {
       .row-box {
         height: calc(100% - 50px);
         height: calc(100% - 50px);
         min-height: 300px;
         min-height: 300px;
-        overflow: hidden;
+        // overflow: hidden;
         display: flex;
         display: flex;
         .table-box {
         .table-box {
           width: 100%;
           width: 100%;
+          height: 100%;
           border-collapse: collapse;
           border-collapse: collapse;
           td {
           td {
             text-align: center;
             text-align: center;

+ 1 - 1
src/views/MES/reportDetail/index.vue

@@ -120,7 +120,7 @@ const config = computed(() => {
     {
     {
       attrs: {
       attrs: {
         label: "报工人",
         label: "报工人",
-        prop: "createUserName",
+        prop: "userName",
         // width: 160,
         // width: 160,
       },
       },
     },
     },

+ 289 - 0
src/views/MES/supplementaryOrder/index.vue

@@ -0,0 +1,289 @@
+<template>
+  <div class="pageIndexClass">
+    <div>
+      <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" highlight-current-row
+               :selectConfig="selectConfig" :action-list="[
+              
+        ]" @get-list="getList">
+
+        <template #list="{ item }">
+          <div style="width:100%">
+            <span v-for="(product ,index) in item.produceOrderDetailList" style="margin-right:15px">
+              <el-popover placement="top-start" :width="300" trigger="hover">
+                <div>
+                  <div>产品编码:{{product.productCode}}</div>
+                  <div>产品名称:{{product.productName}}</div>
+                  <div>产品尺寸:{{product.productLength}}cm*{{product.productWidth}}cm*{{product.productHeight}}cm</div>
+                </div>
+                <template #reference>
+                  <el-progress type="circle" :percentage="(Number(product.finishQuantity) / Number(product.quantity))*100" width="60"
+                               :status="(Number(product.finishQuantity) / Number(product.quantity))*100 == 100 ? 'success' : ''" />
+                </template>
+              </el-popover>
+
+            </span>
+
+          </div>
+        </template>
+
+      </byTable>
+    </div>
+    <el-dialog :title="modalType == 'add' ? '添加店铺' : '编辑店铺'" v-model="dialogVisible" width="500px" destroy-on-close>
+      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="formDom" v-loading="submitLoading">
+      </byForm>
+      <template #footer>
+        <el-button @click="dialogVisible = false" size="defualt">取 消</el-button>
+        <el-button type="primary" @click="submitForm()" size="defualt" :loading="submitLoading">
+          确 定
+        </el-button>
+      </template>
+    </el-dialog>
+  </div>
+</template>
+
+<script setup>
+import byTable from "@/components/byTable/index";
+import byForm from "@/components/byForm/index";
+const { proxy } = getCurrentInstance();
+const loading = ref(false);
+const submitLoading = ref(false);
+const sourceList = ref({
+  data: [],
+  pagination: {
+    total: 3,
+    pageNum: 1,
+    pageSize: 10,
+    keyword: "",
+    produceStatus: "",
+    staDeliveryPeriod: "",
+    endDeliveryPeriod: "",
+    beginTime: "",
+    endTime: "",
+  },
+});
+const treeData = ref([]);
+const dialogVisible = ref(false);
+const modalType = ref("add");
+const statusData = ref([
+  {
+    label: "未开始",
+    value: "0",
+  },
+  {
+    label: "进行中",
+    value: "1",
+  },
+  {
+    label: "已完成",
+    value: "2",
+  },
+]);
+const selectConfig = computed(() => [
+  // {
+  //   label: "生产状态",
+  //   prop: "produceStatus",
+  //   data: statusData.value,
+  // },
+  // {
+  //   type: "time",
+  //   label: "交期",
+  //   placeholder: "开始日期",
+  //   prop: "staDeliveryPeriod",
+  //   placeholderOne: "结束日期",
+  //   propOne: "endDeliveryPeriod",
+  // },
+  // {
+  //   type: "time",
+  //   label: "下单日期",
+  //   placeholder: "开始日期",
+  //   prop: "beginTime",
+  //   placeholderOne: "结束日期",
+  //   propOne: "endTime",
+  // },
+]);
+const config = computed(() => {
+  return [
+    {
+      attrs: {
+        label: "发起时间",
+        prop: "orderCode",
+        // width: 150,
+      },
+    },
+    {
+      attrs: {
+        label: "责任人",
+        prop: "quantity",
+        // width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "生产订单",
+        prop: "userName",
+        // width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "物品编号",
+        prop: "createTime",
+        // width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "物品编号",
+        prop: "processesName",
+        // width: 120,
+      },
+      // render(val) {
+      //   return proxy.dictValueLabel(val, statusData.value);
+      // },
+    },
+    {
+      attrs: {
+        label: "数量",
+        prop: "createTime",
+        // width: 160,
+      },
+    },
+    {
+      attrs: {
+        label: "备注",
+        prop: "createTime",
+        // width: 160,
+      },
+    },
+
+    // {
+    //   attrs: {
+    //     label: "操作",
+    //     width: "100",
+    //     align: "center",
+    //     fixed: "right",
+    //   },
+    //   renderHTML(row) {
+    //     return [
+    //       {
+    //         attrs: {
+    //           label: "完成订单",
+    //           type: "primary",
+    //           text: true,
+    //         },
+    //         el: "button",
+    //         click() {
+    //           getDtl(row);
+    //         },
+    //       },
+    //     ];
+    //   },
+    // },
+  ];
+});
+const formData = reactive({
+  data: {},
+});
+const formOption = reactive({
+  inline: true,
+  labelWidth: 100,
+  itemWidth: 100,
+});
+const formDom = ref(null);
+const formConfig = computed(() => {
+  return [
+    {
+      type: "input",
+      prop: "code",
+      label: "店铺编号",
+      itemWidth: 100,
+      disabled: false,
+    },
+    {
+      type: "input",
+      prop: "name",
+      label: "店铺名称",
+      itemWidth: 100,
+      disabled: false,
+    },
+    {
+      type: "treeSelect",
+      prop: "deptId",
+      label: "负责部门",
+      data: treeData.value,
+      propsTreeLabel: "deptName",
+      propsTreeValue: "deptId",
+      itemWidth: 100,
+      disabled: false,
+    },
+  ];
+});
+const rules = ref({
+  deptId: [{ required: true, message: "请选择负责部门", trigger: "change" }],
+  name: [{ required: true, message: "请输入店铺名称", trigger: "blur" }],
+  code: [{ required: true, message: "请输入店铺编号", trigger: "blur" }],
+});
+
+const getList = async (req) => {
+  sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
+  loading.value = true;
+  proxy
+    .post("/productionReportingDetail/page", sourceList.value.pagination)
+    .then((res) => {
+      sourceList.value.data = res.rows;
+      sourceList.value.pagination.total = res.total;
+      setTimeout(() => {
+        loading.value = false;
+      }, 200);
+    });
+};
+
+const openModal = () => {
+  dialogVisible.value = true;
+  modalType.value = "add";
+  formData.data = {
+    definition: "2",
+    fileList: [],
+  };
+  if (currencyData.value && currencyData.value.length > 0) {
+    formData.data.currency = currencyData.value[0].dictKey;
+    formData.data.costCurrency = currencyData.value[0].dictKey;
+  }
+};
+
+const submitForm = () => {
+  formDom.value.handleSubmit((valid) => {
+    submitLoading.value = true;
+    proxy.post("/shopInfo/" + modalType.value, formData.data).then(
+      (res) => {
+        proxy.msgTip("操作成功", 1);
+        dialogVisible.value = false;
+        submitLoading.value = false;
+        getList();
+      },
+      (err) => {
+        submitLoading.value = false;
+      }
+    );
+  });
+};
+
+const getDtl = (row) => {
+  modalType.value = "edit";
+  proxy.post("/shopInfo/detail", { id: row.id }).then((res) => {
+    formData.data = res;
+    dialogVisible.value = true;
+  });
+};
+
+getList();
+</script>
+
+<style lang="scss" scoped>
+::v-deep(.el-progress__text) {
+  font-size: 14px !important;
+}
+.content {
+  padding: 20px;
+}
+</style>

+ 107 - 77
src/views/iot/base/equipment/index.vue

@@ -16,12 +16,12 @@
         </template>
         </template>
       </byTable>
       </byTable>
     </div>
     </div>
-    <el-dialog :title="modalType == 'add' ? '添加设备' : '编辑'" v-model="dialogVisible" width="800" v-loading="loading">
-      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="byform">
+    <el-dialog :title="modalType == 'add' ? '添加设备' : '编辑'" v-model="dialogVisible" width="800">
+      <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="byform" v-loading="submitLoading">
       </byForm>
       </byForm>
       <template #footer>
       <template #footer>
-        <el-button @click="dialogVisible = false" size="default">取 消</el-button>
-        <el-button type="primary" @click="submitForm('byform')" size="default" :loading="submitLoading">
+        <el-button @click="dialogVisible = false" size="default" v-debounce>取 消</el-button>
+        <el-button type="primary" @click="submitForm('byform')" size="default" v-debounce>
           确 定
           确 定
         </el-button>
         </el-button>
       </template>
       </template>
@@ -46,74 +46,93 @@ const sourceList = ref({
     pageSize: 10,
     pageSize: 10,
   },
   },
 });
 });
-let dialogVisible = ref(false);
-let roomDialogVisible = ref(false);
-let modalType = ref("add");
-let rules = ref({
-  tdaProductId: [
-    { required: true, message: "请选择行业名称", trigger: ["blur", "change"] },
-  ],
-  productId: [
-    { required: true, message: "请选择产品名称", trigger: ["blur", "change"] },
+const treeData = ref([]);
+const companyData = ref([]);
+const dialogVisible = ref(false);
+const roomDialogVisible = ref(false);
+const modalType = ref("add");
+const rules = ref({
+  companyId: [{ required: true, message: "请选择归属公司", trigger: "change" }],
+  deviceCode: [
+    { required: true, message: "请输入设备编码", trigger: ["blur"] },
   ],
   ],
   deviceName: [
   deviceName: [
-    { required: true, message: "请输入设备名称", trigger: ["blur", "change"] },
-  ],
-  nodeId: [
-    { required: true, message: "请输入设备标识", trigger: ["blur", "change"] },
-  ],
-  secret: [
-    { required: true, message: "请输入密钥", trigger: ["blur", "change"] },
+    { required: true, message: "请输入设备名称", trigger: ["blur"] },
   ],
   ],
 });
 });
-const selectConfig = reactive([]);
+const selectConfig = computed(() => [
+  {
+    label: "归属公司",
+    prop: "companyId",
+    data: companyData.value,
+  },
+]);
 const config = computed(() => {
 const config = computed(() => {
   return [
   return [
     {
     {
       attrs: {
       attrs: {
+        label: "归属公司",
+        prop: "companyName",
+        width: 110,
+      },
+    },
+    {
+      attrs: {
         label: "设备编码",
         label: "设备编码",
-        prop: "appName",
+        prop: "deviceCode",
+        width: 150,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "设备名称",
         label: "设备名称",
-        prop: "productName",
-        align: "center",
+        prop: "deviceName",
+        width: 150,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "规格型号",
         label: "规格型号",
-        prop: "deviceName",
-        align: "center",
+        prop: "deviceSpec",
+        width: 150,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "制造商",
         label: "制造商",
-        prop: "nodeId",
-        align: "center",
+        prop: "makerName",
+        width: 150,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "制造商电话",
         label: "制造商电话",
-        prop: "secret",
-        align: "center",
+        prop: "makerPhone",
+        width: 180,
+      },
+    },
+    {
+      attrs: {
+        label: "出厂日期",
+        prop: "deviceDeliveryTime",
+        width: 110,
+      },
+      render(val) {
+        if (val) {
+          return val.slice(0, 10);
+        }
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "备注",
         label: "备注",
-        prop: "secret",
-        align: "center",
+        prop: "remark",
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "操作",
         label: "操作",
-        width: "120",
+        width: "100",
         align: "center",
         align: "center",
       },
       },
       // 渲染 el-button,一般用在最后一列。
       // 渲染 el-button,一般用在最后一列。
@@ -127,29 +146,19 @@ const config = computed(() => {
             },
             },
             el: "button",
             el: "button",
             click() {
             click() {
-              // 弹窗提示是否删除
-              ElMessageBox.confirm(
-                "此操作将永久删除该数据, 是否继续?",
-                "提示",
-                {
-                  confirmButtonText: "确定",
-                  cancelButtonText: "取消",
-                  type: "warning",
-                }
-              ).then(() => {
-                // 删除
-                proxy
-                  .post("/tdaDevice/delete", {
-                    id: row.id,
-                  })
-                  .then((res) => {
-                    ElMessage({
-                      message: "删除成功",
-                      type: "success",
+              proxy
+                .msgConfirm()
+                .then((res) => {
+                  proxy
+                    .post("/tdaDevice/delete", {
+                      id: row.id,
+                    })
+                    .then((res) => {
+                      proxy.msgTip("删除成功", 1);
+                      getList();
                     });
                     });
-                    getList();
-                  });
-              });
+                })
+                .catch((err) => {});
             },
             },
           },
           },
         ];
         ];
@@ -158,22 +167,29 @@ const config = computed(() => {
   ];
   ];
 });
 });
 
 
-let formData = reactive({
+const formData = reactive({
   data: {},
   data: {},
-  treeData: [],
 });
 });
 const formOption = reactive({
 const formOption = reactive({
   inline: true,
   inline: true,
   labelWidth: 100,
   labelWidth: 100,
   itemWidth: 100,
   itemWidth: 100,
-  rules: [],
 });
 });
 const byform = ref(null);
 const byform = ref(null);
-const treeData = ref([]);
-const formConfig = reactive([
+
+const formConfig = computed(() => [
+  {
+    type: "treeSelect",
+    prop: "companyId",
+    label: "归属公司",
+    data: treeData.value,
+    propsTreeLabel: "deptName",
+    propsTreeValue: "deptId",
+    itemWidth: 100,
+  },
   {
   {
     type: "input",
     type: "input",
-    prop: "deviceName",
+    prop: "deviceCode",
     label: "设备编码",
     label: "设备编码",
     required: true,
     required: true,
   },
   },
@@ -185,49 +201,68 @@ const formConfig = reactive([
   },
   },
   {
   {
     type: "input",
     type: "input",
-    prop: "deviceName",
+    prop: "deviceSpec",
     label: "规格型号",
     label: "规格型号",
     required: true,
     required: true,
   },
   },
   {
   {
     type: "input",
     type: "input",
-    prop: "deviceName",
+    prop: "makerName",
     label: "制造商",
     label: "制造商",
     required: true,
     required: true,
   },
   },
   {
   {
     type: "input",
     type: "input",
-    prop: "deviceName",
+    prop: "makerPhone",
     label: "制造商电话",
     label: "制造商电话",
     required: true,
     required: true,
   },
   },
   {
   {
     type: "date",
     type: "date",
     itemType: "date",
     itemType: "date",
-    prop: "nodeId",
+    prop: "deviceDeliveryTime",
     label: "出厂日期",
     label: "出厂日期",
     required: true,
     required: true,
   },
   },
   {
   {
     type: "input",
     type: "input",
     itemType: "textarea",
     itemType: "textarea",
-    prop: "secret",
+    prop: "remark",
     label: "备注",
     label: "备注",
     required: true,
     required: true,
   },
   },
 ]);
 ]);
-const getList = async (req) => {
+const getList = (req) => {
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   sourceList.value.pagination = { ...sourceList.value.pagination, ...req };
   loading.value = true;
   loading.value = true;
-  proxy.post("/tdaDevice/page", sourceList.value.pagination).then((message) => {
-    console.log(message);
-    sourceList.value.data = message.rows;
-    sourceList.value.pagination.total = message.total;
+  proxy.post("/tdaDevice/page", sourceList.value.pagination).then((res) => {
+    sourceList.value.data = res.rows;
+    sourceList.value.pagination.total = res.total;
     setTimeout(() => {
     setTimeout(() => {
       loading.value = false;
       loading.value = false;
     }, 200);
     }, 200);
   });
   });
 };
 };
+
+const getDict = () => {
+  proxy
+    .get("/tenantDept/list", {
+      pageNum: 1,
+      pageSize: 9999,
+      keyword: "",
+      tenantId: proxy.useUserStore().user.tenantId,
+      type: 0,
+    })
+    .then((res) => {
+      companyData.value = res.data.map((x) => ({
+        ...x,
+        label: x.deptName,
+        value: x.deptId,
+      }));
+      treeData.value = proxy.handleTree(res.data, "deptId");
+    });
+};
+getDict();
 const openModal = () => {
 const openModal = () => {
   dialogVisible.value = true;
   dialogVisible.value = true;
   modalType.value = "add";
   modalType.value = "add";
@@ -235,15 +270,11 @@ const openModal = () => {
 };
 };
 
 
 const submitForm = () => {
 const submitForm = () => {
-  console.log(byform.value);
   byform.value.handleSubmit((valid) => {
   byform.value.handleSubmit((valid) => {
     submitLoading.value = true;
     submitLoading.value = true;
     proxy.post("/tdaDevice/" + modalType.value, formData.data).then(
     proxy.post("/tdaDevice/" + modalType.value, formData.data).then(
       (res) => {
       (res) => {
-        ElMessage({
-          message: modalType.value == "add" ? "添加成功" : "编辑成功",
-          type: "success",
-        });
+        proxy.msgTip(modalType.value == "add" ? "添加成功" : "编辑成功");
         dialogVisible.value = false;
         dialogVisible.value = false;
         submitLoading.value = false;
         submitLoading.value = false;
         getList();
         getList();
@@ -255,7 +286,6 @@ const submitForm = () => {
 
 
 const getDtl = (row) => {
 const getDtl = (row) => {
   modalType.value = "edit";
   modalType.value = "edit";
-
   proxy.post("/tdaDevice/detail", { id: row.id }).then((res) => {
   proxy.post("/tdaDevice/detail", { id: row.id }).then((res) => {
     formData.data = res;
     formData.data = res;
     console.log(formData);
     console.log(formData);

+ 20 - 28
src/views/purchaseManage/purchasePayment/invoice/index.vue

@@ -11,22 +11,8 @@
       </byTable>
       </byTable>
     </div>
     </div>
 
 
-    <el-dialog :title="modalType == 'add' ? '添加发票' : '编辑发票'" v-if="dialogVisible" v-model="dialogVisible" width="600" v-loading="loadingDialog">
+    <el-dialog :title="modalType == 'add' ? '添加发票' : '编辑发票'" v-if="dialogVisible" v-model="dialogVisible" width="1000" v-loading="loadingDialog">
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
       <byForm :formConfig="formConfig" :formOption="formOption" v-model="formData.data" :rules="rules" ref="submit">
-        <template #money>
-          <div style="width: 100%">
-            <el-input-number onmousewheel="return false;" v-model="formData.data.money" placeholder="请输入开票金额" :precision="2" :controls="false"
-                             :min="0" />
-          </div>
-        </template>
-        <template #file>
-          <div style="width: 100%">
-            <el-upload v-model:fileList="fileList" :action="uploadUrl" :data="uploadData" multiple :before-upload="uploadFile"
-                       :on-preview="onPreviewFile">
-              <el-button>上传文件</el-button>
-            </el-upload>
-          </div>
-        </template>
         <template #information>
         <template #information>
           <el-table :data="formData.data.invoiceDetailsList" style="width: 100%; margin-top: 16px">
           <el-table :data="formData.data.invoiceDetailsList" style="width: 100%; margin-top: 16px">
             <el-table-column prop="code" label="采购合同" width="140" />
             <el-table-column prop="code" label="采购合同" width="140" />
@@ -242,23 +228,29 @@ const formConfig = computed(() => {
         changeSupply(val);
         changeSupply(val);
       },
       },
       disabled: formData.data.id,
       disabled: formData.data.id,
+      itemWidth: 50,
     },
     },
     {
     {
       type: "select",
       type: "select",
       label: "发票类型",
       label: "发票类型",
       prop: "type",
       prop: "type",
       data: invoiceType.value,
       data: invoiceType.value,
+      itemWidth: 50,
     },
     },
     {
     {
-      type: "slot",
+      type: "number",
       prop: "money",
       prop: "money",
-      slotName: "money",
       label: "开票金额",
       label: "开票金额",
+      precision: 2,
+      min: 0,
+      controls: false,
+      itemWidth: 50,
     },
     },
     {
     {
-      type: "slot",
-      prop: "file",
-      slotName: "file",
+      type: "upload",
+      listType: "text",
+      accept: "",
+      prop: "fileList",
       label: "上传附件",
       label: "上传附件",
     },
     },
     {
     {
@@ -325,14 +317,14 @@ const onPreviewFile = (file) => {
 };
 };
 const submitForm = () => {
 const submitForm = () => {
   submit.value.handleSubmit(() => {
   submit.value.handleSubmit(() => {
-    if (fileList.value && fileList.value.length > 0) {
-      formData.data.fileList = fileList.value.map((item) => {
-        return {
-          id: item.raw.id,
-          fileName: item.raw.fileName,
-        };
-      });
-    }
+    // if (fileList.value && fileList.value.length > 0) {
+    //   formData.data.fileList = fileList.value.map((item) => {
+    //     return {
+    //       id: item.raw.id,
+    //       fileName: item.raw.fileName,
+    //     };
+    //   });
+    // }
     if (
     if (
       !(
       !(
         formData.data.invoiceDetailsList &&
         formData.data.invoiceDetailsList &&

+ 51 - 22
src/views/purchaseSales/outAndInWarehouse/manualDelivery/index.vue

@@ -74,22 +74,24 @@ const warehouseList = ref([]);
 const outBoundReason = ref([
 const outBoundReason = ref([
   {
   {
     label: "生产出库",
     label: "生产出库",
-    value: "1",
+    value: "9",
   },
   },
   {
   {
     label: "生产超领",
     label: "生产超领",
-    value: "2",
+    value: "1",
   },
   },
   {
   {
     label: "销售出库",
     label: "销售出库",
-    value: "3",
+    value: "2",
   },
   },
   {
   {
     label: "借用出库",
     label: "借用出库",
-    value: "4",
+    value: "3",
   },
   },
 ]);
 ]);
 
 
+const produceOrder = ref([]);
+
 const productUnit = ref([]);
 const productUnit = ref([]);
 const sourceList = ref({
 const sourceList = ref({
   data: [],
   data: [],
@@ -186,6 +188,16 @@ const getDict = () => {
       });
       });
     }
     }
   });
   });
+
+  proxy
+    .post("produceOrder/page", { pageNum: 1, pageSize: 9999 })
+    .then((res) => {
+      produceOrder.value = res.rows.map((x) => ({
+        label: x.code,
+        value: x.id,
+      }));
+    });
+
   proxy.getDictOne(["unit"]).then((res) => {
   proxy.getDictOne(["unit"]).then((res) => {
     productUnit.value = res["unit"].map((x) => ({
     productUnit.value = res["unit"].map((x) => ({
       label: x.dictValue,
       label: x.dictValue,
@@ -240,47 +252,53 @@ const formConfig = computed(() => {
     },
     },
     {
     {
       type: "input",
       type: "input",
-      prop: "aa",
+      prop: "exWarehousePerson",
       label: "领料人",
       label: "领料人",
       itemWidth: 50,
       itemWidth: 50,
     },
     },
     {
     {
       type: "select",
       type: "select",
-      prop: "aa",
+      prop: "type",
       label: "出库原因",
       label: "出库原因",
       required: true,
       required: true,
       data: outBoundReason.value,
       data: outBoundReason.value,
-      fn: () => {},
+      fn: (val) => {
+        if (["1", "2", "9"].includes(val)) {
+          formData.data.expectRestitutionTime = "";
+        } else {
+          formData.data.prodOrderId = "";
+        }
+      },
       itemWidth: 50,
       itemWidth: 50,
     },
     },
     {
     {
       type: "select",
       type: "select",
-      prop: "ss",
+      prop: "prodOrderId",
       label: "生产订单",
       label: "生产订单",
-      data: outBoundReason.value,
-      itemWidth: 50,
-      isShow: formData.data.aa == "1" || formData.data.aa == "2",
-    },
-    {
-      type: "select",
-      prop: "ssdd",
-      label: "销售订单",
-      data: outBoundReason.value,
+      data: produceOrder.value,
       itemWidth: 50,
       itemWidth: 50,
-      isShow: formData.data.aa == "3",
+      isShow: ["1", "2", "9"].includes(formData.data.type),
     },
     },
+    // {
+    //   type: "select",
+    //   prop: "ssdd",
+    //   label: "销售订单",
+    //   data: outBoundReason.value,
+    //   itemWidth: 50,
+    //   isShow: formData.data.aa == "3",
+    // },
     {
     {
       type: "date",
       type: "date",
       itemType: "date",
       itemType: "date",
-      prop: "ss",
+      prop: "expectRestitutionTime",
       label: "归还日期",
       label: "归还日期",
       itemWidth: 50,
       itemWidth: 50,
-      isShow: formData.data.aa == "4",
+      isShow: formData.data.type == "3",
     },
     },
     {
     {
       type: "input",
       type: "input",
       itemType: "textarea",
       itemType: "textarea",
-      prop: "aa",
+      prop: "remarks",
       label: "备注",
       label: "备注",
       itemWidth: 100,
       itemWidth: 100,
     },
     },
@@ -293,11 +311,22 @@ const formConfig = computed(() => {
 });
 });
 const rules = ref({
 const rules = ref({
   warehouseId: [{ required: true, message: "请选择仓库", trigger: "change" }],
   warehouseId: [{ required: true, message: "请选择仓库", trigger: "change" }],
+  exWarehousePerson: [
+    { required: true, message: "请输入领料人", trigger: "blur" },
+  ],
+  type: [{ required: true, message: "请选择出库原因", trigger: "change" }],
+  prodOrderId: [
+    { required: true, message: "请选择生产订单", trigger: "change" },
+  ],
+  expectRestitutionTime: [
+    { required: true, message: "请选择归还日期", trigger: "change" },
+  ],
   quantity: [{ required: true, message: "请输入出库数量", trigger: "blur" }],
   quantity: [{ required: true, message: "请输入出库数量", trigger: "blur" }],
+  remarks: [{ required: true, message: "请输入备注", trigger: "blur" }],
 });
 });
 const openModal = () => {
 const openModal = () => {
   formData.data = {
   formData.data = {
-    type: "2",
+    type: "",
     list: [],
     list: [],
   };
   };
   loadingDialog.value = false;
   loadingDialog.value = false;

+ 96 - 2
src/views/purchaseSales/outAndInWarehouse/manualWarehousing/index.vue

@@ -71,7 +71,22 @@ import SelectMaterial from "@/components/product/SelectMaterial.vue";
 const { proxy } = getCurrentInstance();
 const { proxy } = getCurrentInstance();
 const warehouseList = ref([]);
 const warehouseList = ref([]);
 const productUnit = ref([]);
 const productUnit = ref([]);
-
+const inBoundReason = ref([
+  {
+    label: "归还入库",
+    value: "100",
+  },
+  {
+    label: "退料入库",
+    value: "101",
+  },
+  {
+    label: "废料入库",
+    value: "102",
+  },
+]);
+const produceOrder = ref([]);
+const lendData = ref([]);
 const sourceList = ref({
 const sourceList = ref({
   data: [],
   data: [],
   pagination: {
   pagination: {
@@ -167,6 +182,29 @@ const getDict = () => {
       });
       });
     }
     }
   });
   });
+
+  proxy
+    .post("produceOrder/page", { pageNum: 1, pageSize: 9999 })
+    .then((res) => {
+      produceOrder.value = res.rows.map((x) => ({
+        label: x.code,
+        value: x.id,
+      }));
+    });
+
+  proxy
+    .post("/stockJournal/page", {
+      pageNum: 1,
+      pageSize: 9999,
+      isRestitution: 0,
+    })
+    .then((res) => {
+      lendData.value = res.rows.map((x) => ({
+        label: x.code,
+        value: x.id,
+      }));
+    });
+
   proxy.getDictOne(["material_unit"]).then((res) => {
   proxy.getDictOne(["material_unit"]).then((res) => {
     productUnit.value = res["material_unit"].map((x) => ({
     productUnit.value = res["material_unit"].map((x) => ({
       label: x.dictValue,
       label: x.dictValue,
@@ -214,6 +252,51 @@ const formConfig = computed(() => {
       label: "仓库名称",
       label: "仓库名称",
       required: true,
       required: true,
       data: warehouseList.value,
       data: warehouseList.value,
+      itemWidth: 50,
+    },
+    {
+      type: "input",
+      prop: "exWarehousePerson",
+      label: "申请入库人",
+      itemWidth: 50,
+    },
+    {
+      type: "select",
+      prop: "type",
+      label: "入库原因",
+      required: true,
+      data: inBoundReason.value,
+      fn: () => {
+        if (["101", "102"].includes(val)) {
+          formData.data.borrowId = "";
+        } else {
+          formData.data.prodOrderId = "";
+        }
+      },
+      itemWidth: 50,
+    },
+    {
+      type: "select",
+      prop: "prodOrderId",
+      label: "生产订单",
+      data: produceOrder.value,
+      itemWidth: 50,
+      isShow: ["101", "102"].includes(formData.data.type),
+    },
+    {
+      type: "select",
+      prop: "borrowId",
+      label: "借用出库单",
+      data: lendData.value,
+      itemWidth: 50,
+      isShow: formData.data.type == "100",
+    },
+    {
+      type: "input",
+      itemType: "textarea",
+      prop: "remarks",
+      label: "备注",
+      itemWidth: 100,
     },
     },
     {
     {
       type: "slot",
       type: "slot",
@@ -224,7 +307,18 @@ const formConfig = computed(() => {
 });
 });
 const rules = ref({
 const rules = ref({
   warehouseId: [{ required: true, message: "请选择仓库", trigger: "change" }],
   warehouseId: [{ required: true, message: "请选择仓库", trigger: "change" }],
-  quantity: [{ required: true, message: "请输入数量", trigger: "blur" }],
+  exWarehousePerson: [
+    { required: true, message: "请输入领料人", trigger: "blur" },
+  ],
+  type: [{ required: true, message: "请选择入库原因", trigger: "change" }],
+  prodOrderId: [
+    { required: true, message: "请选择生产订单", trigger: "change" },
+  ],
+  borrowId: [
+    { required: true, message: "请选择借用出库单", trigger: "change" },
+  ],
+  quantity: [{ required: true, message: "请输入入库数量", trigger: "blur" }],
+  remarks: [{ required: true, message: "请输入备注", trigger: "blur" }],
 });
 });
 const openModal = () => {
 const openModal = () => {
   formData.data = {
   formData.data = {

+ 46 - 49
src/views/purchaseSales/outAndInWarehouse/record/index.vue

@@ -3,18 +3,13 @@
     <div class="content">
     <div class="content">
       <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :selectConfig="selectConfig"
       <byTable :source="sourceList.data" :pagination="sourceList.pagination" :config="config" :loading="loading" :selectConfig="selectConfig"
                highlight-current-row :action-list="[
                highlight-current-row :action-list="[
-          {
+         
+        ]" @get-list="getList">
+        <!-- {
             text: '导出Excel',
             text: '导出Excel',
             action: () => deriveExcel(),
             action: () => deriveExcel(),
-          },
-        ]" @get-list="getList">
-        <template #warehouseName="{ item }">
-          <div>
-            <!-- <span v-if="item.opType == 1">{{ item.toWarehouseName }}</span>
-            <span v-else>{{ item.warehouseName }}</span> -->
-            <span>{{ item.warehouseName }}</span>
-          </div>
-        </template>
+          }, -->
+
       </byTable>
       </byTable>
     </div>
     </div>
 
 
@@ -96,76 +91,76 @@ const opTypeList = ref([
 ]);
 ]);
 const typeList = ref([
 const typeList = ref([
   {
   {
-    label: "手动入库",
+    label: "生产打样",
+    value: "0",
+  },
+  {
+    label: "生产超领",
     value: "1",
     value: "1",
   },
   },
   {
   {
-    label: "手动出库",
+    label: "销售出库",
     value: "2",
     value: "2",
   },
   },
   {
   {
-    label: "调仓入库",
+    label: "借用出库",
     value: "3",
     value: "3",
   },
   },
   {
   {
-    label: "待入库入库",
+    label: "补单超领",
     value: "4",
     value: "4",
   },
   },
   {
   {
-    label: "待出库出库",
+    label: "丢件超领",
     value: "5",
     value: "5",
   },
   },
   {
   {
-    label: "组合入库",
+    label: "采购退货",
     value: "6",
     value: "6",
   },
   },
   {
   {
-    label: "组合出库",
+    label: "调拨出库",
     value: "7",
     value: "7",
   },
   },
   {
   {
-    label: "组合拆分入库",
+    label: "盘亏出库",
     value: "8",
     value: "8",
   },
   },
   {
   {
-    label: "组合拆分出库",
+    label: "生产出库",
     value: "9",
     value: "9",
   },
   },
   {
   {
-    label: "京东销售出库",
-    value: "10",
+    label: "归还入库",
+    value: "100",
   },
   },
   {
   {
-    label: "调仓出库",
-    value: "11",
+    label: "退料入库",
+    value: "101",
   },
   },
   {
   {
-    label: "销售订单出库",
-    value: "12",
+    label: "废料入库",
+    value: "102",
   },
   },
   {
   {
-    label: "退货出库",
-    value: "13",
+    label: "丢件寻回",
+    value: "103",
   },
   },
   {
   {
-    label: "到货入库",
-    value: "14",
+    label: "采购入库",
+    value: "104",
   },
   },
   {
   {
-    label: "京东退货入库",
-    value: "15",
+    label: "调拨入库",
+    value: "105",
   },
   },
   {
   {
-    label: "采购到货",
-    value: "18",
+    label: "盘盈入库",
+    value: "106",
   },
   },
   {
   {
-    label: "到货质检",
-    value: "19",
-  },
-  {
-    label: "生产任务出库",
-    value: "20",
+    label: "完工入库",
+    value: "107",
   },
   },
 ]);
 ]);
 const warehouseList = ref([]);
 const warehouseList = ref([]);
@@ -216,7 +211,7 @@ const config = computed(() => {
       attrs: {
       attrs: {
         label: "出入库类型",
         label: "出入库类型",
         prop: "type",
         prop: "type",
-        width: 130,
+        width: 110,
       },
       },
       render(type) {
       render(type) {
         return proxy.dictValueLabel(type, typeList.value);
         return proxy.dictValueLabel(type, typeList.value);
@@ -225,28 +220,30 @@ const config = computed(() => {
     {
     {
       attrs: {
       attrs: {
         label: "仓库名称",
         label: "仓库名称",
-        slot: "warehouseName",
+        prop: "warehouseName",
+        width: 130,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "物品编码",
         label: "物品编码",
         prop: "productCode",
         prop: "productCode",
-        width: 110,
+        width: 150,
       },
       },
     },
     },
     {
     {
       attrs: {
       attrs: {
         label: "物品名称",
         label: "物品名称",
         prop: "productName",
         prop: "productName",
+        "min-width": 150,
       },
       },
     },
     },
-    {
-      attrs: {
-        label: "规格型号",
-        prop: "productSpec",
-      },
-    },
+    // {
+    //   attrs: {
+    //     label: "规格型号",
+    //     prop: "productSpec",
+    //   },
+    // },
     {
     {
       attrs: {
       attrs: {
         label: "单位",
         label: "单位",
@@ -275,7 +272,7 @@ const config = computed(() => {
       attrs: {
       attrs: {
         label: "操作时间",
         label: "操作时间",
         prop: "createTime",
         prop: "createTime",
-        width: 155,
+        width: 160,
       },
       },
     },
     },
     {
     {