ysy před 1 rokem
rodič
revize
2ac00f8b68

+ 0 - 66
src/views/produceOrder/components/bomList.vue

@@ -1,66 +0,0 @@
-<template>
-  <ele-modal :visible.sync="visible" title="物料清单">
-    <ele-pro-table 
-	  :columns="columns" 
-	  :datasource="tableList" 
-	  cache-key="bomList"
-	  :need-page="false"
-	>
-    </ele-pro-table>
-  </ele-modal>
-</template>
-
-<script>
-  import dictMixins from '@/mixins/dictMixins';
-  export default {
-	mixins: [dictMixins],
-    data () {
-      return {
-        visible: false,
-	    	tableList:[],
-        columns: [
-          {
-            label: '序号',
-            type: 'index',
-            width: 55,
-            align: 'center'
-          },
-          {
-            label: '编码',
-            prop: 'listCode'
-          },
-          {
-            label: '名称',
-            prop: 'listName'
-          },
-          {
-            label: '类型',
-            prop: 'listType',
-			formatter: (_row, _column, cellValue) => {
-			  return this.getDictValue('类型用途', _row.listType);
-			}			
-          },
-          {
-            label: '计量单位',
-            prop: 'listUnit'
-          },
-		  {
-		    label: '数量',
-		    prop: 'listQuantity'
-		  }
-        ]
-      };
-    },
-	created () {
-	  this.requestDict('类型用途');
-	},
-    methods: {
-      open (row) {
-		if(row){
-			this.tableList = row.materialList
-		}
-				this.visible = true;
-		}
-    }
-  };
-</script>

+ 95 - 0
src/views/produceOrder/components/details/index.vue

@@ -0,0 +1,95 @@
+<template>
+  <div>
+    <el-drawer
+      title=""
+      :visible.sync="drawer"
+      :custom-class="isFullscreen ? 'not-fullscreen' : 'is-fullscreen'"
+      :before-close="handleClose"
+      :with-header="false"
+    >
+      <!-- 自定义头部 -->
+      <div class="custom-drawer-header">
+        <div> </div>
+        <div class="rx-ec">
+          <el-button
+            icon="el-icon-full-screen"
+            type="text"
+            @click="handleFull"
+            >{{ isFullscreen ? '全屏' : '缩小' }}</el-button
+          >
+          <el-button
+            icon="el-icon-circle-close"
+            type="text"
+            @click="handleClose"
+            >关闭</el-button
+          >
+        </div>
+      </div>
+
+      <div class="drawer_content">
+        <Info ></Info>
+      </div>
+    </el-drawer>
+  </div>
+</template>
+
+<script>
+ import Info from './info.vue';
+  export default {
+    components: { Info },
+    data() {
+      return {
+        drawer: false,
+        isFullscreen: true
+      };
+    },
+
+    methods: {
+      handleClose() {
+        this.drawer = false;
+      },
+
+      handleFull() {
+        this.isFullscreen = !this.isFullscreen;
+        this.$forceUpdate();
+      },
+
+      open(row) {
+        this.drawer = true;
+      }
+    }
+  };
+</script>
+
+<style lang="scss" scoped>
+  /* 自定义全屏样式 */
+  ::v-deep .is-fullscreen {
+    width: 100vw !important;
+    height: 100vh !important;
+    overflow: hidden !important; /* 隐藏滚动条 */
+  }
+  ::v-deep .not-fullscreen {
+    width: calc(100vw - 260px) !important;
+    height: 100vh !important;
+    overflow: hidden !important; /* 隐藏滚动条 */
+  }
+
+  .custom-drawer-header {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    padding: 4px 15px;
+    background-color: #f5f7fa; /* 自定义背景色 */
+    border-bottom: 1px solid #ebeef5; /* 自定义边框,与抽屉内容分隔 */
+  }
+
+  .drawer_content {
+    margin: 10px 20px;
+    box-sizing: border-box;
+  }
+
+  .drawer_content {
+    margin: 10px 20px;
+    box-sizing: border-box;
+  }
+</style>

+ 24 - 0
src/views/produceOrder/components/details/info.vue

@@ -0,0 +1,24 @@
+<template>
+    <div>
+
+    </div>
+  </template>
+  
+  <script>
+    export default {
+      data() {
+        return {
+
+        };
+      },
+  
+      methods: {
+
+      }
+    };
+  </script>
+  
+  <style lang="scss" scoped>
+
+  </style>
+  

+ 0 - 51
src/views/produceOrder/components/otherMission.vue

@@ -1,51 +0,0 @@
-<template>
-  <ele-modal title="" :visible.sync="visible">
-    <el-form inline>
-      <el-form-item label="任务名称">
-        <el-input></el-input>
-      </el-form-item>
-      <el-form-item label="创建时间">
-        <el-date-picker type="daterange"></el-date-picker>
-      </el-form-item>
-    </el-form>
-    <ele-pro-table :columns="columns" :datasource="[]" cache-key="otherMission">
-    </ele-pro-table>
-  </ele-modal>
-</template>
-
-<script>
-  export default {
-    data () {
-      return {
-        visible: false,
-        columns: [
-          {
-            label: '开始时间',
-            prop: 'aa'
-          },
-          {
-            label: '任务名称',
-            prop: 'aa'
-          },
-          {
-            label: '创建人',
-            prop: 'aa'
-          },
-          {
-            label: '完成时间',
-            prop: 'aa'
-          },
-          {
-            label: '执行周期',
-            prop: 'aa'
-          }
-        ]
-      };
-    },
-    methods: {
-      open () {
-        this.visible = true;
-      }
-    }
-  };
-</script>

+ 0 - 139
src/views/produceOrder/components/progressBox.vue

@@ -1,139 +0,0 @@
-<template>
-  <el-card>
-    <div class="progress-container">
-      <ul>
-        <li
-          v-for="(item, index) in stepList"
-          :key="index"
-          :class="{ active: active >= index }"
-        >
-          <el-tooltip
-            class="item"
-            effect="dark"
-            :content="item.taskTypeName"
-            placement="top"
-          >
-            <p>{{ item.taskTypeName }}</p>
-          </el-tooltip>
-          <div
-            class="progress-box"
-            :style="`backgroundImage:linear-gradient(to top, var(--color-primary), var(--color-primary) ${item.percent},#fff ${item.percent}, #fff);`"
-          ></div>
-          <p class="num">{{ item.number }}</p>
-        </li>
-      </ul>
-    </div>
-  </el-card>
-</template>
-
-<script>
-  export default {
-    props: {
-      // active: {
-      //   type: [Number, String],
-      //   default: 3
-      // },
-      list: {
-        type: Array,
-        default: []
-      },
-      total: {
-        type: Number,
-        default: 1
-      }
-    },
-    data() {
-      return {
-        stepList: [],
-        active: -1
-      };
-    },
-    watch: {
-      list: {
-        handler() {
-          if (this.list.length) {
-            this.stepList = this.list;
-            this.stepList.map((item, index) => {
-              item.percent = (item.number / this.total) * 100 + '%';
-            });
-            const active = this.stepList.findIndex((item) => item.number === 0);
-            if (active == -1) {
-              this.active = this.stepList.length - 1;
-            } else {
-              this.active = active - 1;
-            }
-          }
-        },
-        immediate: true
-      }
-    },
-    methods: {}
-  };
-</script>
-
-<style lang="scss" scoped>
-  .progress-container {
-    width: 100%;
-    overflow-x: auto;
-    ul {
-      list-style: none;
-      display: flex;
-      justify-content: flex-start;
-      align-items: center;
-      li {
-        display: flex;
-        flex-wrap: wrap;
-        justify-content: center;
-        flex: 1;
-        position: relative;
-        min-width: 110px;
-        &::after {
-          content: '';
-          position: absolute;
-          left: 0;
-          right: 0;
-          top: 50%;
-          transform: translateY(-50%);
-          height: 1px;
-          background-color: #ccc;
-        }
-        &:first-of-type::after {
-          left: 50%;
-        }
-        &:last-of-type::after {
-          right: 50%;
-        }
-        &.active {
-          &::after {
-            background-color: var(--color-primary);
-          }
-          .progress-box {
-            border-color: var(--color-primary);
-          }
-        }
-        .el-tooltip {
-          width: 100%;
-          text-align: center;
-          white-space: nowrap; /* 不换行 */
-          overflow: hidden; /* 超出部分隐藏 */
-          text-overflow: ellipsis; /* 显示省略号 */
-        }
-        .num,
-        .text {
-          width: 100%;
-          text-align: center;
-        }
-        .progress-box {
-          position: relative;
-          z-index: 1;
-          width: 32px;
-          height: 32px;
-          margin: 10px 0;
-          border-radius: 50%;
-          // background-color: #fff;
-          border: 1px solid #ccc;
-        }
-      }
-    }
-  }
-</style>

+ 0 - 1298
src/views/produceOrder/detail.vue

@@ -1,1298 +0,0 @@
-<template>
-  <div class="ele-body">
-    <div class="page-title">
-      <el-page-header @back="$router.go(-1)">
-        <div slot="content" class="pageContent">
-          <div>详情</div>
-        </div>
-      </el-page-header>
-      <el-button @click="handlePrint">打印工单</el-button>
-    </div>
-    <progressBox
-      v-if="tabList.length"
-      :list="tabList"
-      :total="infoData.formingNum"
-    />
-    <el-card>
-      <el-descriptions title="" direction="vertical" :column="7" border>
-        <el-descriptions-item label="工单号">{{
-          infoData.code
-        }}</el-descriptions-item>
-        <el-descriptions-item label="生产版本">{{
-          infoData.produceVersionName
-        }}</el-descriptions-item>
-        <!-- <el-descriptions-item label="工单类型">苏州市</el-descriptions-item> -->
-        <el-descriptions-item label="产线">{{
-          infoData.productLine
-        }}</el-descriptions-item>
-        <el-descriptions-item label="工艺路线版本">{{
-          infoData.routingVersion
-        }}</el-descriptions-item>
-        <el-descriptions-item label="计划编号">{{
-          infoData.productionPlanCode
-        }}</el-descriptions-item>
-        <el-descriptions-item label="计划类型">{{
-          typeList[infoData.planType]
-        }}</el-descriptions-item>
-        <el-descriptions-item label="产品编码">{{
-          infoData.productCode
-        }}</el-descriptions-item>
-        <el-descriptions-item label="产品名称">{{
-          infoData.productName
-        }}</el-descriptions-item>
-        <el-descriptions-item label="牌号 | 型号"
-          >{{ infoData.brandNo }} | {{ infoData.model }}</el-descriptions-item
-        >
-        <el-descriptions-item label="要求生产数量(PCS)">{{
-          infoData.formingNum
-        }}</el-descriptions-item>
-        <el-descriptions-item label="要求生产重量(KG)">{{
-          infoData.formingWeight
-        }}</el-descriptions-item>
-        <el-descriptions-item label="计划开始时间">{{
-          infoData.planStartTime
-        }}</el-descriptions-item>
-        <el-descriptions-item label="实际开始时间">{{
-          infoData.startTime
-        }}</el-descriptions-item>
-        <el-descriptions-item label="已生产数量(PCS)">{{
-          infoData.formedNum
-        }}</el-descriptions-item>
-        <el-descriptions-item label="已生产重量(KG)">{{
-          infoData.formedWeight
-        }}</el-descriptions-item>
-        <el-descriptions-item label="已交付数量(PCS)">{{
-          infoData.deliveredQuantity
-        }}</el-descriptions-item>
-        <el-descriptions-item label="已交付重量(KG)">{{
-          infoData.deliveredWeight
-        }}</el-descriptions-item>
-        <el-descriptions-item label="工单状态">{{
-          statusList[infoData.status]
-        }}</el-descriptions-item>
-        <el-descriptions-item label="完成时间">{{
-          infoData.completeTime
-        }}</el-descriptions-item>
-        <el-descriptions-item label="生产周期">{{
-          infoData.productionCycle
-        }}</el-descriptions-item>
-      </el-descriptions>
-    </el-card>
-
-    <el-card v-if="tabList.length">
-      <el-tabs v-model="activeName" type="card" @tab-click="handleTabClick">
-        <el-tab-pane
-          :label="item.taskTypeName"
-          :name="JSON.stringify(index)"
-          v-for="(item, index) in tabList"
-          :key="item.taskCode"
-        ></el-tab-pane>
-        <!--        <el-tab-pane label="挤压生产" name="1"> </el-tab-pane>
-        <el-tab-pane label="自然干燥" name="2"></el-tab-pane>
-        <el-tab-pane label="升温干燥" name="3"></el-tab-pane>
-        <el-tab-pane label="半加定长" name="4"></el-tab-pane>
-        <el-tab-pane label="备炉" name="5"></el-tab-pane>
-        <el-tab-pane label="烧结" name="6"></el-tab-pane>
-        <el-tab-pane label="深加工" name="7"></el-tab-pane>
-        <el-tab-pane label="包装" name="8"></el-tab-pane>
-        <el-tab-pane label="入库" name="9"></el-tab-pane> -->
-      </el-tabs>
-      <ele-pro-table
-        :columns="columns"
-        :datasource="datasource"
-        :key="activeName"
-        :cache-key="`produceDetal${activeName}`"
-        :initLoad="false"
-        ref="table"
-      >
-        <template v-slot:toolbar>
-          <div class="tips-box">
-            <ul
-              v-if="
-                chooseItem == '挤压生产' ||
-                chooseItem.includes('模压') ||
-                chooseItem.includes('挤压') ||
-                (chooseItem.includes('等静压') && activeName == 0)
-              "
-            >
-              <li>
-                <span class="label">累计合格品数量</span>
-                {{ countMsg.standardTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计合格品重量</span>
-                {{ countMsg.standardTotalWeight }}KG
-              </li>
-              <li>
-                <span class="label">累计投料重量</span>
-                {{ countMsg.feedMaterielWeight }}KG
-              </li>
-            </ul>
-            <ul
-              v-else-if="
-                ['自然干燥', '升温干燥', '半加定长'].includes(chooseItem) ||
-                chooseItem.includes('半加')
-              "
-            >
-              <li>
-                <span class="label">累计合格品数量</span>
-                {{ countMsg.standardTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计合格品重量</span>
-                {{ countMsg.standardTotalWeight }}KG
-              </li>
-              <li>
-                <span class="label">累计投料产品重量</span>
-                {{ countMsg.feedProductWeight }}KG
-              </li>
-            </ul>
-            <ul v-else-if="['备炉'].includes(chooseItem)">
-              <li>
-                <span class="label">累计交接数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计实际数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-            </ul>
-            <ul v-else-if="['烧结', '质检'].includes(chooseItem)">
-              <li>
-                <span class="label">累计合格品数量</span>
-                {{ countMsg.standardTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计合格品重量</span>
-                {{ countMsg.standardTotalWeight }}KG
-              </li>
-              <li>
-                <span class="label">累计投料数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-            </ul>
-            <ul v-else-if="['包装'].includes(chooseItem)">
-              <li>
-                <span class="label">累计交接数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计实际数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计包装数量</span>
-                {{ countMsg.packTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计包装产品数量</span>
-                {{ countMsg.packProductTotalNum }}PCS
-              </li>
-            </ul>
-            <ul v-else-if="['入库'].includes(chooseItem)">
-              <li>
-                <span class="label">报工次数</span> {{ countMsg.reportNum }}</li
-              >
-              <li>
-                <span class="label">批次数量</span> {{ countMsg.reportNum }}</li
-              >
-              <li>
-                <span class="label">累计入库数量</span
-                >{{ countMsg.inStoreNum }}PCS</li
-              >
-            </ul>
-            <ul v-else>
-              <li>
-                <span class="label">累计合格品数量</span>
-                {{ countMsg.standardTotalNum }}PCS
-              </li>
-              <li>
-                <span class="label">累计合格品重量</span>
-                {{ countMsg.standardTotalWeight }}KG
-              </li>
-              <li>
-                <span class="label">累计投料数量</span>
-                {{ countMsg.joinTotalNum }}PCS
-              </li>
-            </ul>
-            <!-- <el-link type="primary" v-if="activeName == 1" @click="openOther"
-              >其他任务记录</el-link
-            > -->
-          </div>
-        </template>
-        <template v-slot:bom="{ row }">
-          <el-link type="primary" @click="check(row)">查看</el-link>
-        </template>
-        <template v-slot:action="{ row }">
-          <el-link type="primary" @click="writeOff(row)">冲销</el-link>
-        </template>
-      </ele-pro-table>
-    </el-card>
-    <otherMission ref="otherMissionRef" />
-    <bomList ref="bomListRef" />
-    <OrderPrint
-      ref="orderPrintRef"
-      :workOrderId="workOrderId"
-      :infoData="infoData"
-      :processList="tabList"
-    />
-  </div>
-</template>
-
-<script>
-  import progressBox from './components/progressBox';
-  import otherMission from './components/otherMission';
-  import OrderPrint from '@/components/print/OrderPrint';
-  import bomList from './components/bomList';
-  import dictMixins from '@/mixins/dictMixins';
-  import {
-    reportPage,
-    getInfoById,
-    reportCount,
-    writeOffWork
-  } from '@/api/produceOrder/index.js';
-  export default {
-    mixins: [dictMixins],
-    components: {
-      OrderPrint,
-      otherMission,
-      progressBox,
-      bomList
-    },
-    data() {
-      return {
-        infoData: {},
-        descriptionsShow: true,
-        activeName: '0',
-        tabList: [],
-        columnOpt: {
-          挤压生产: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '投料时间',
-              prop: 'feedingTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料重量',
-              prop: 'feedingWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料执行人',
-              prop: 'feedingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备编码',
-              prop: 'deviceCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备名称',
-              prop: 'deviceName',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '周转车编码',
-            //   prop: 'transferCarCode'
-            // },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 120,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 120,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          自然干燥: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '投料时间',
-              prop: 'feedingTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料执行人',
-              prop: 'feedingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '产品数量',
-              prop: 'productNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '周转车编码',
-            //   prop: 'transferCarCode'
-            // },
-            {
-              label: '区域编码',
-              prop: 'areaCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '干燥时长',
-              prop: 'dryingDuration',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          升温干燥: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '投料时间',
-              prop: 'feedingTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料执行人',
-              prop: 'feedingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '产品数量',
-              prop: 'productNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '周转车编码',
-            //   prop: 'transferCarCode'
-            // },
-            {
-              label: '设备编码',
-              prop: 'deviceCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备名称',
-              prop: 'deviceName',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '升温曲线',
-              prop: 'temperatureRamp',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          半加定长: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '投料时间',
-              prop: 'feedingTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料执行人',
-              prop: 'feedingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '产品数量',
-              prop: 'productNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '周转车编码',
-            //   prop: 'transferCarCode'
-            // },
-            {
-              label: '设备编码',
-              prop: 'deviceCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备名称',
-              prop: 'deviceName',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          备炉: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '交接时间',
-              prop: 'handoverTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '交接执行人',
-              prop: 'handoverOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '交接数量',
-            //   prop: 'handoverQuantity',
-            //   minWidth: 100,
-            //   align: 'center'
-            // },
-            {
-              label: '实际数量',
-              prop: 'billOfMaterials',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '执行时间',
-              prop: 'executionTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '执行人',
-              prop: 'executor',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备编码',
-              prop: 'deviceCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备名称',
-              prop: 'deviceName',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '烧结曲线',
-              prop: 'sinteringCurve',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          烧结: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          质检: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          深加工: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '交接时间',
-              prop: 'handoverTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '交接执行人',
-              prop: 'handoverOperator',
-              minWidth: 120,
-              align: 'center'
-            },
-            // {
-            //   label: '交接数量',
-            //   prop: 'handoverQuantity'
-            // },
-            // {
-            //   label: '实际数量',
-            //   prop: 'billOfMaterials'
-            // },
-            {
-              label: '投料时间',
-              prop: 'feedingTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '投料执行人',
-              prop: 'feedingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备编码',
-              prop: 'deviceCode',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '设备名称',
-              prop: 'deviceName',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品数量',
-              prop: 'standardNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '合格品重量',
-              prop: 'standardWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '不合格品数量',
-              prop: 'noStandardNum',
-              minWidth: 120,
-              align: 'center'
-            },
-            {
-              label: '不合格品重量',
-              prop: 'noStandardWeight',
-              minWidth: 120,
-              align: 'center'
-            },
-            {
-              label: '副产品重量',
-              prop: 'secondaryProductWeight',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          包装: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '交接时间',
-              prop: 'handoverTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '交接执行人',
-              prop: 'handoverOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '交接数量',
-            //   prop: 'handoverQuantity',
-            //   minWidth: 100,
-            //   align: 'center'
-            // },
-            {
-              label: '实际数量',
-              prop: 'billOfMaterials',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '包装数量',
-              prop: 'packNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '包装产品数量',
-              prop: 'packagedProductQuantity',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '尾料数量',
-              prop: 'surplusNum',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '物料清单',
-              prop: 'materialList',
-              minWidth: 100,
-              align: 'center',
-              slot: 'bom'
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ],
-          入库: [
-            {
-              label: '序号',
-              type: 'index',
-              width: 55,
-              align: 'center'
-            },
-            {
-              label: '交接时间',
-              prop: 'handoverTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '交接执行人',
-              prop: 'handoverOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            // {
-            //   label: '交接数量',
-            //   prop: 'handoverQuantity',
-            //   minWidth: 100,
-            //   align: 'center'
-            // },
-            {
-              label: '实际数量',
-              prop: 'billOfMaterials',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工时间',
-              prop: 'reportWorkTime',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '报工执行人',
-              prop: 'reportingOperator',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '批次数量',
-              prop: 'batchQuantity',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '入库数量',
-              prop: 'inboundQuantity',
-              minWidth: 100,
-              align: 'center'
-            },
-            {
-              label: '交货仓库',
-              prop: 'storageCode',
-              minWidth: 100,
-              align: 'center',
-              formatter: (_row, _column, cellValue) => {
-                return this.getDictValue('仓库', _row.storageCode);
-              }
-            },
-            {
-              label: '操作',
-              slot: 'action'
-            }
-          ]
-        },
-        workOrderId: '',
-        taskCode: '',
-        typeList: {
-          1: '内销订单',
-          2: '外销订单',
-          3: '预制订单'
-        },
-        statusList: {
-          4: '待生产',
-          5: '生产中',
-          6: '已完成',
-          7: '已延期'
-        },
-        countMsg: {},
-        chooseIndex: 0,
-        chooseItem: '',
-        request: {
-          isLast: 0,
-          nextCompleteNum: 0,
-          completeNum: 0
-        }
-      };
-    },
-    created() {
-      this.workOrderId = this.$route.params.id;
-      this.getInfo(this.workOrderId);
-      this.requestDict('仓库');
-    },
-    computed: {
-      columns() {
-        const { taskTypeName: name } = this.tabList[this.activeName];
-
-        if (name.includes('半加')) {
-          return this.columnOpt['半加定长'];
-        }
-        if (
-          (name.includes('模压') ||
-            name.includes('挤压') ||
-            name.includes('等静压')) &&
-          this.activeName == 0
-        ) {
-          return this.columnOpt['挤压生产'];
-        }
-        return (
-          this.columnOpt[this.tabList[this.activeName].taskTypeName] ||
-          this.columnOpt['深加工']
-        );
-      }
-    },
-    methods: {
-      handlePrint() {
-        this.$refs.orderPrintRef.open();
-      },
-
-      handleTabClick(tab) {
-        if (this.chooseIndex != tab.index) {
-          this.chooseIndex = Number(tab.index);
-          const chooseItem = this.tabList[this.chooseIndex];
-          this.chooseItem = this.tabList[this.chooseIndex].taskTypeName;
-          this.activeName = tab.index;
-          this.taskCode = chooseItem.taskCode || '';
-          this.reload({
-            workOrderId: this.workOrderId,
-            taskCode: this.taskCode
-          });
-          this.getReportCount();
-          this.setData();
-        }
-      },
-      setData() {
-        this.request.completeNum = this.tabList[this.chooseIndex].number;
-        if (this.chooseIndex == this.tabList.length - 1) {
-          this.request.isLast = 1;
-        } else {
-          this.request.isLast = 0;
-          this.request.nextCompleteNum =
-            this.tabList[this.chooseIndex + 1].number;
-        }
-      },
-      async datasource({ page, limit, where }) {
-        const res = await reportPage({ ...where, pageNum: page, size: limit });
-        if (typeof res.list == 'string') {
-          res.list = [];
-        }
-        return res;
-      },
-      /* 刷新表格 */
-      reload(where) {
-        this.$nextTick(() =>
-          this.$refs.table.reload({ page: 1, limit: 10, where })
-        );
-      },
-      async getInfo(id) {
-        const res = await getInfoById(id);
-        this.infoData = res;
-        if (typeof res.taskTypeProcessDiagrams == 'string') {
-          this.tabList = [];
-        } else {
-          const list = res.taskTypeProcessDiagrams.filter(
-            (i) => !i.taskTypeName?.includes('工具')
-          );
-
-          const index = list.findIndex((i) =>
-            i.taskTypeName.includes('挤压干燥')
-          );
-          if (index > -1) {
-            list[index].taskTypeName = '升温干燥';
-          }
-
-          this.tabList = list;
-        }
-        // this.activeName = this.tabList[0]?.taskTypeName || ''
-        this.chooseItem = this.tabList[0]?.taskTypeName;
-        this.activeName = 0;
-        this.taskCode = this.tabList[0]?.taskCode || '';
-        this.chooseIndex = 0;
-        this.reload({ workOrderId: this.workOrderId, taskCode: this.taskCode });
-        this.getReportCount();
-        this.setData();
-      },
-      async getReportCount() {
-        const index = this.tabList.findIndex(
-          (item) => item.taskCode === this.taskCode
-        );
-        let lastTaskCode = this.taskCode;
-        if (index > 0) {
-          lastTaskCode = this.tabList[index - 1].taskCode;
-        }
-        const res = await reportCount({
-          lastTaskCode,
-          taskCode: this.taskCode,
-          workOrderId: this.workOrderId
-        });
-        this.countMsg = res;
-      },
-      openOther() {
-        this.$refs.otherMissionRef.open();
-      },
-
-      // 冲销
-      writeOff(row) {
-        const h = this.$createElement;
-        this.$confirm('', {
-          message: h('div', null, [
-            h('i', {
-              class: 'el-icon-question',
-              style: 'color:#f90;font-size:30px;'
-            }),
-            h(
-              'span',
-              {
-                style:
-                  'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;'
-              },
-              '提示'
-            ),
-            h(
-              'p',
-              { style: 'margin:10px 0 0 40px;color:red' },
-              '是否要撤销本次报工?'
-            )
-          ]),
-          confirmButtonText: '确定',
-          cancelButtonText: '取消'
-        })
-          .then(() => {
-            const data = {
-              taskCode: this.taskCode,
-              taskName: this.chooseItem,
-              reportId: row.id,
-              writeOffNum: row.standardNum
-                ? row.standardNum
-                : row.actualQuantity,
-              ...this.request
-            };
-            writeOffWork(data).then((res) => {
-              if (res == 1) {
-                this.$message.success('冲销成功');
-                this.reload({
-                  workOrderId: this.workOrderId,
-                  taskCode: this.taskCode
-                });
-                this.refreshData();
-              } else if (res == 0) {
-                this.$confirm('', {
-                  message: h('div', null, [
-                    h('i', {
-                      class: 'el-icon-question',
-                      style: 'color:#f90;font-size:30px;'
-                    }),
-                    h(
-                      'span',
-                      {
-                        style:
-                          'margin-left:10px;font-size:16px;line-height:30px;font-weight:600;vertical-align:top;color:red'
-                      },
-                      '冲销失败'
-                    ),
-                    h(
-                      'p',
-                      { style: 'margin:10px 0 0 40px' },
-                      '冲销后的总数不可小于下道工序的总数'
-                    )
-                  ]),
-                  confirmButtonText: '确定',
-                  showCancelButton: false
-                })
-                  .then(() => {})
-                  .catch(() => {});
-              } else {
-                this.$message.error('接口异常');
-              }
-            });
-          })
-          .catch(() => {});
-      },
-
-      check(row) {
-        this.$refs.bomListRef.open(row);
-      },
-
-      async refreshData() {
-        this.getReportCount();
-        const res = await getInfoById(this.workOrderId);
-        this.infoData = res;
-        if (typeof res.taskTypeProcessDiagrams == 'string') {
-          this.tabList = [];
-        } else {
-          this.tabList = res.taskTypeProcessDiagrams;
-        }
-        this.setData();
-      }
-    }
-  };
-</script>
-
-<style lang="scss" scoped>
-  .el-tabs {
-    margin-top: 20px;
-  }
-
-  .tips-box {
-    display: flex;
-    justify-content: space-between;
-    align-items: center;
-    padding-right: 20px;
-    ul {
-      list-style: none;
-      display: flex;
-      justify-content: flex-start;
-
-      li {
-        margin-right: 40px;
-      }
-    }
-  }
-</style>

+ 10 - 9
src/views/produceOrder/index.vue

@@ -120,7 +120,7 @@
               v-if="row.status == 4 && row.isSplit == 0"
               type="primary"
               :underline="false"
-              icon="el-icon-truck"
+            
               @click="toUnpack(row)"
             >
               拆分
@@ -129,7 +129,6 @@
               v-if="row.status == 4"
               type="primary"
               :underline="false"
-              icon="el-icon-edit"
               @click="toEnd(row)"
             >
               完结
@@ -146,6 +145,8 @@
     <createDialog ref="createRef" @success="createSuccess" />
     <unpackDialog ref="unpackRef" @success="createSuccess" />
     <pickingDialog ref="PickingRef" />
+
+    <detailsPop ref="detailsRef"> </detailsPop>
   </div>
 </template>
 
@@ -165,8 +166,12 @@
   import print from './components/print.vue';
   import printSr from './components/printSr';
   import printTg from './components/printTg';
+  
+  import detailsPop from './components/details/index.vue'
+
   import { debounce } from 'lodash';
 
+
   export default {
     components: {
       produceOrderSearch,
@@ -175,7 +180,8 @@
       unpackDialog,
       print,
       printSr,
-      printTg
+      printTg,
+      detailsPop
     },
     data() {
       return {
@@ -597,12 +603,7 @@
       },
 
       goDetail(row) {
-        this.$router.push({
-          path: '/produceOrder/detail/' + row.id,
-          query: {
-            produceVersionId: row.produceVersionId
-          }
-        });
+        this.$refs.detailsRef.open(row)
       },
       handleDelete({ id }) {
         this.$confirm('确定删除当前数据?', '提示').then(async () => {

+ 0 - 1
src/views/produceWord/components/order-search.vue

@@ -91,7 +91,6 @@
             end-placeholder="结束日期"
             value-format="yyyy-MM-dd HH:mm:ss"
             :default-time="['00:00:00', '23:59:59']"
-            :picker-options="pickerOptions"
          
           >
           </el-date-picker>