Răsfoiți Sursa

新增委外

695593266@qq.com 7 luni în urmă
părinte
comite
95c4102e49

+ 14 - 0
api/pda/outsourcing.js

@@ -0,0 +1,14 @@
+import { postJ, post, get } from "@/utils/request";
+import Vue from "vue";
+
+export async function getOutsourceList(params) {
+  const data = await get(
+    Vue.prototype.apiUrl + `/mes/applyoutsource/page`,
+    params,
+    true
+  );
+  if (data.code == 0) {
+    return data.data;
+  }
+  return Promise.reject(data.message);
+}

+ 8 - 0
pages.json

@@ -1843,6 +1843,14 @@
 				"navigationBarTextStyle": "white"
 			}
 		},
+		{
+			"path" : "pages/pda/outsourcing/components/outsourcingDetail",
+			"style" : 
+			{
+				"navigationStyle": "custom",
+				"navigationBarTextStyle": "white"
+			}
+		},
 		{
 			"path": "pages/invoiceConfirm/index",
 			"style": {

+ 2 - 0
pages/pda/by_product_recovery/index/index.vue

@@ -42,6 +42,7 @@
         <u-list-item v-for="(item, index) in list" :key="index">
           <view class="card_box" @click="handleDetail">
             <view class="item_box rx-bc">
+              <view class="round">{{ index + 1 }}</view>
               <view class="item_one perce100 rx-sc">
                 <view class="lable">回收单号:</view>
                 <view class="text">{{ item.code }}</view>
@@ -506,6 +507,7 @@ export default {
         color: #fff;
         text-align: center;
         font-size: 20rpx;
+        margin-right: 10px;
       }
 
       .orderId {

+ 6 - 3
pages/pda/jobBooking/components/batchProductJobBom.vue

@@ -363,7 +363,6 @@
                   style="margin-left: 20px"
                   @click="openLoss(it, idx)"
                   v-if="
-                    ![2, 3, 6].includes(Number(item.currentTaskDiagram.type)) &&
                     !it.extInfo.isLoss &&
                     item.currentTaskDiagram.isFirstTask != 1
                   "
@@ -1065,8 +1064,6 @@ export default {
       }
     },
 
-    openLoss(item, index) {},
-
     cancel() {
       this.show = false;
       this.reportWeight = 0;
@@ -1726,6 +1723,12 @@ export default {
   }
 }
 
+.unit {
+  color: #666;
+  font-size: 14px;
+  margin-right: 8px;
+}
+
 ::v-deep .uni-forms-item__label {
   font-size: 12px;
 }

+ 2 - 0
pages/pda/material_return/index/index.vue

@@ -35,6 +35,7 @@
         <u-list-item v-for="(item, index) in dataList" :key="index">
           <view class="card_box" @click="handleDetail">
             <view class="item_box rx-bc">
+              <view class="round">{{ index + 1 }}</view>
               <view class="item_one perce100 rx-sc">
                 <view class="lable">退料单编号:</view>
                 <view>{{ item.code }}</view>
@@ -262,6 +263,7 @@ export default {
         color: #fff;
         text-align: center;
         font-size: 20rpx;
+        margin-right: 10px;
       }
 
       .orderId {

+ 9 - 0
pages/pda/nonconforming/components/detailList.vue

@@ -0,0 +1,9 @@
+<template>
+  <view></view>
+</template>
+
+<script>
+export default {};
+</script>
+
+<style></style>

+ 6 - 2
pages/pda/nonconforming/index/index.vue

@@ -34,8 +34,9 @@
       >
         <u-list-item v-for="(item, index) in dataList" :key="index">
           <!-- <itemCard :item="item"></itemCard> -->
-          <view class="card_box" @click="handleDetail">
+          <view class="card_box" @click="handleDetail(item)">
             <view class="item_box rx-bc">
+              <view class="round">{{ index + 1 }}</view>
               <view class="item_one perce100 rx-sc">
                 <view class="lable">编码:</view>
                 <view>{{ item.unqualifiedProductsCode }}</view>
@@ -208,7 +209,9 @@ export default {
 
     addMaterial() {},
 
-    handleDetail() {},
+    handleDetail(item) {
+      console.log(item);
+    },
 
     async getDisposeList(code) {
       let res = await getByCode(code);
@@ -317,6 +320,7 @@ export default {
         color: #fff;
         text-align: center;
         font-size: 20rpx;
+        margin-right: 10px;
       }
 
       .orderId {

+ 157 - 0
pages/pda/outsourcing/components/outsourcingData.vue

@@ -0,0 +1,157 @@
+<template>
+  <view class="card_box">
+    <view class="item_box rx-sc">
+      <view class="round">{{ index + 1 }}</view>
+      <view class="orderId">{{ item.categoryCode }} </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view class="lable">名称:</view>
+        <view>{{ item.categoryName }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>编码:</view>
+        <view>{{ item.categoryCode }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>规格:</view>
+        <view>{{ item.specification }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>型号:</view>
+        <view>{{ item.modelType }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view>类型:</view>
+        <view v-if="item.sourceType == 1" class="gylx">物品清单</view>
+        <view v-if="item.sourceType == 2" class="gylx">带料清单</view>
+        <view v-if="item.sourceType == 3" class="gylx">产出清单</view>
+      </view>
+
+      <view class="item_one perce50 rx-sc">
+        <view>牌号:</view>
+        <view>{{ item.brandNum }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">数量:</view>
+        <view>{{ item.totalCount }}{{ item.measuringUnit }}</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view>重量:</view>
+        <view v-if="item.totalWeight">
+          {{ item.totalWeight }}{{ item.weightUnit }}
+        </view>
+        <view v-else>无</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">物料代号:</view>
+        <view>{{ item.extInfo.materielCode }}</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view>客户代号:</view>
+        <view> {{ item.extInfo.clientCode }} </view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view class="lable">刻码:</view>
+        <view>{{ item.extInfo.engrave }}</view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  props: {
+    item: {
+      type: Object,
+      default: () => ({}),
+    },
+
+    index: {
+      type: Number,
+      default: 0,
+    },
+  },
+
+  data() {
+    return {};
+  },
+  methods: {},
+};
+</script>
+
+<style lang="scss" scoped>
+.card_box {
+  width: 750rpx;
+  padding: 16rpx 32rpx;
+  box-sizing: border-box;
+  border-bottom: 2rpx solid #e1e1e1;
+
+  .item_box {
+    margin-top: 10rpx;
+
+    .round {
+      width: 40rpx;
+      height: 40rpx;
+      line-height: 40rpx;
+      border-radius: 50%;
+      background: $theme-color;
+      color: #fff;
+      text-align: center;
+      font-size: 20rpx;
+    }
+
+    .orderId {
+      color: #000;
+      font-family: PingFang HK;
+      font-size: 28rpx;
+      font-style: normal;
+      font-weight: 600;
+      margin-left: 16rpx;
+    }
+
+    .item_one {
+      width: 100%;
+      font-size: 26rpx;
+      font-style: normal;
+      font-weight: 400;
+      line-height: 38rpx;
+      word-wrap: break-word;
+    }
+
+    .item-right {
+      flex: 1;
+    }
+
+    .gylx {
+      color: $theme-color;
+    }
+
+    .perce50 {
+      width: 50%;
+    }
+  }
+}
+</style>

+ 240 - 0
pages/pda/outsourcing/components/outsourcingDetail.vue

@@ -0,0 +1,240 @@
+<template>
+  <view class="content-box">
+    <uni-nav-bar
+      fixed="true"
+      statusBar="true"
+      left-icon="back"
+      title="委外单详情"
+      background-color="#157A2C"
+      color="#fff"
+      @clickLeft="back"
+    ></uni-nav-bar>
+
+    <view class="title_box rx-bc">
+      <view class="name">基本信息 </view>
+    </view>
+
+    <view class="material">
+      <view class="content_table">
+        <view class="item">
+          <view class="lable rx-cc">委外单编码</view>
+          <view class="content">
+            {{ item.code }}
+          </view>
+        </view>
+
+        <view class="item">
+          <view class="lable rx-cc">委外单名称</view>
+          <view class="content">{{ item.name }}</view>
+        </view>
+        <view class="item">
+          <view class="lable rx-cc">委外发起工序</view>
+          <view class="content">{{ item.taskName }}</view>
+        </view>
+
+        <view class="item">
+          <view class="lable rx-cc">委外工序</view>
+          <view class="content">{{ item.taskNames }}</view>
+        </view>
+
+        <view class="item">
+          <view class="lable rx-cc">工单编码</view>
+          <view class="content">{{ item.workOrderCode }}</view>
+        </view>
+
+        <view class="item">
+          <view class="lable rx-cc">预计到货日期</view>
+          <view class="content">{{ item.requireDeliveryTime }}</view>
+        </view>
+
+        <view class="item">
+          <view class="lable rx-cc">创建时间</view>
+          <view class="content">{{ item.createTime }}</view>
+        </view>
+        <view class="item">
+          <view class="lable rx-cc">状态</view>
+          <view class="content">{{
+            item.status == 0 ? "未提交" : item.status == 1 ? "已提交" : "已发布"
+          }}</view>
+        </view>
+      </view>
+    </view>
+
+    <view class="list_box">
+      <u-list key="list">
+        <u-list-item v-for="(item, index) in item.detailList" :key="index">
+          <outsourcingData :item="item" :index="index" />
+        </u-list-item>
+      </u-list>
+    </view>
+  </view>
+</template>
+
+<script>
+import outsourcingData from "./outsourcingData.vue";
+export default {
+  components: {
+    outsourcingData,
+  },
+
+  data() {
+    return {
+      item: null,
+    };
+  },
+
+  onLoad(options) {
+    this.item = JSON.parse(options.item);
+  },
+
+  methods: {
+    scrolltolower() {},
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.content-box {
+  height: 100vh;
+  overflow: hidden;
+  display: flex;
+  flex-direction: column;
+  background-color: $page-bg;
+  background: #fff;
+}
+
+.title_box {
+  .name {
+    font-size: 28rpx;
+    font-style: normal;
+    font-weight: 400;
+    color: $theme-color;
+    padding-left: 20rpx;
+
+    position: relative;
+
+    &:before {
+      position: absolute;
+      content: "";
+      left: 0rpx;
+      top: 0rpx;
+      bottom: 0rpx;
+      width: 4rpx;
+      height: 28rpx;
+      background: $theme-color;
+      margin: auto;
+    }
+  }
+
+  .btn_box {
+    padding: 0 18rpx;
+    height: 60rpx;
+    background: $theme-color;
+    font-size: 26rpx;
+    font-style: normal;
+    font-weight: 400;
+    font-size: 24rpx;
+    color: #fff;
+    border-radius: 4rpx;
+
+    .scan {
+      width: 34rpx;
+      height: 34rpx;
+      margin-right: 12rpx;
+    }
+  }
+}
+
+.material {
+  margin-top: 10rpx;
+
+  .content_table {
+    width: 100%;
+    border: 2rpx solid $border-color;
+
+    .item {
+      display: flex;
+      border-bottom: 2rpx solid $border-color;
+
+      .lable {
+        width: 150rpx;
+        text-align: center;
+        background-color: #f7f9fa;
+        font-size: 26rpx;
+        border-right: 2rpx solid $border-color;
+        flex-shrink: 0;
+      }
+
+      .lable150 {
+        width: 156rpx !important;
+        font-size: 24rpx;
+      }
+
+      .ww80 {
+        width: 80rpx;
+      }
+
+      .content {
+        width: 518rpx;
+        min-height: 64rpx;
+        font-size: 28rpx;
+        line-height: 28rpx;
+        font-style: normal;
+        font-weight: 400;
+        padding: 18rpx 8rpx;
+        box-sizing: border-box;
+        word-wrap: break-word;
+        flex-grow: 1 !important;
+
+        .unit {
+          padding: 0 4rpx;
+          font-size: 24rpx;
+          color: #404446;
+        }
+      }
+
+      .content_num {
+        display: flex;
+        align-items: center;
+        padding: 0 4rpx;
+
+        /deep/ .uni-input-input {
+          border: 2rpx solid #f0f8f2;
+          background: #f0f8f2;
+          color: $theme-color;
+        }
+      }
+
+      .pd4 {
+        padding: 4rpx 8rpx;
+      }
+
+      &:last-child {
+        border-bottom: none;
+      }
+    }
+
+    .ww55 {
+      width: 55%;
+    }
+
+    .ww45 {
+      width: 45%;
+    }
+  }
+}
+
+.mt20 {
+  margin-top: 20rpx;
+}
+
+.list_box {
+  flex: 1;
+  overflow: hidden;
+  padding: 16rpx 0;
+
+  .u-list {
+    height: 100% !important;
+  }
+}
+</style>

+ 218 - 0
pages/pda/outsourcing/components/workCard.vue

@@ -0,0 +1,218 @@
+<template>
+  <view class="card_box" @click="handleDetail">
+    <view class="item_box rx-sc">
+      <view class="round">{{ index + 1 }}</view>
+      <view class="orderId">{{ item.code }} </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view class="lable">委外名称:</view>
+        <view>{{ item.name }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>委外单编码:</view>
+        <view>{{ item.code }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>工单编码:</view>
+        <view>{{ item.workOrderCode }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view>委外工序:</view>
+        <view class="gylx">{{ item.taskNames }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">委外数量:</view>
+        <view class="gylx">{{ item.totalCount }}{{ item.measuringUnit }}</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view>委外重量:</view>
+
+        <view v-if="item.totalWeight" class="gylx">
+          {{ item.totalWeight }}{{ item.weightUnit }}
+        </view>
+        <view v-else>无</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">委外类型:</view>
+        <view v-if="item.type == 4" class="gylx">带料委外</view>
+        <view v-if="item.type == 5" class="gylx">不带料委外</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">批次号:</view>
+        <view class="gylx">{{ item.batchNo }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-sc">
+      <view class="item_one perce50 rx-sc">
+        <view>委外场景:</view>
+        <view v-if="item.outsourceScene == 2" class="gylx">单工序</view>
+        <view v-if="item.outsourceScene == 3" class="gylx">多工序</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">委外单位:</view>
+        <view class="gylx">{{ item.supplierName }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">仓库:</view>
+        <view class="gylx">{{ item.warehouseName }}</view>
+      </view>
+      <view class="item_one perce50 rx-sc">
+        <view>申请人:</view>
+        <view class="gylx">{{ item.createUserName }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view>状态:</view>
+        <view class="gylx">{{
+          item.status == 0 ? "未提交" : item.status == 1 ? "已提交" : "已发布"
+        }}</view>
+      </view>
+
+      <view class="item_one perce50 rx-sc">
+        <view>委外状态:</view>
+        <view v-if="item.purchaseStatus == 0" class="gylx">未入库</view>
+        <view v-if="item.purchaseStatus == 1" class="gylx">原料入库</view>
+        <view v-if="item.purchaseStatus == 3" class="gylx">委外完成</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one perce50 rx-sc">
+        <view>委外发起工序:</view>
+        <view class="gylx">{{ item.taskName }}</view>
+      </view>
+
+      <view class="item_one perce50 rx-sc">
+        <view class="lable">审核状态:</view>
+        <view v-if="item.approvalStatus == 0" class="gylx">未提交</view>
+        <view v-if="item.approvalStatus == 1" class="gylx">审核中</view>
+        <view v-if="item.approvalStatus == 2" class="gylx">审核通过</view>
+        <view v-if="item.approvalStatus == 3" class="gylx">审核不通过</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view class="lable">创建时间:</view>
+        <view>{{ item.createTime }}</view>
+      </view>
+    </view>
+
+    <view class="item_box rx-bc">
+      <view class="item_one rx-sc">
+        <view class="lable">预计到货日期:</view>
+        <view>{{ item.requireDeliveryTime }}</view>
+      </view>
+    </view>
+  </view>
+</template>
+
+<script>
+export default {
+  props: {
+    item: {
+      type: Object,
+      default: () => ({}),
+    },
+
+    index: {
+      type: Number,
+      default: 0,
+    },
+  },
+
+  data() {
+    return {
+      statusList: {
+        4: "待生产",
+        5: "生产中",
+        6: "已完成",
+        7: "已延期",
+        8: "待下达",
+      },
+    };
+  },
+  methods: {
+    handleDetail() {
+      this.$emit("handleDetail", this.item);
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+.card_box {
+  width: 750rpx;
+  padding: 16rpx 32rpx;
+  box-sizing: border-box;
+  border-bottom: 2rpx solid #e1e1e1;
+
+  .item_box {
+    margin-top: 10rpx;
+
+    .round {
+      width: 40rpx;
+      height: 40rpx;
+      line-height: 40rpx;
+      border-radius: 50%;
+      background: $theme-color;
+      color: #fff;
+      text-align: center;
+      font-size: 20rpx;
+    }
+
+    .orderId {
+      color: #000;
+      font-family: PingFang HK;
+      font-size: 28rpx;
+      font-style: normal;
+      font-weight: 600;
+      margin-left: 16rpx;
+    }
+
+    .item_one {
+      width: 100%;
+      font-size: 26rpx;
+      font-style: normal;
+      font-weight: 400;
+      line-height: 38rpx;
+      word-wrap: break-word;
+    }
+
+    .item-right {
+      flex: 1;
+    }
+
+    .gylx {
+      color: $theme-color;
+    }
+
+    .perce50 {
+      width: 50%;
+    }
+  }
+}
+</style>

+ 11 - 8
pages/pda/outsourcing/index/index.vue

@@ -33,7 +33,11 @@
         :preLoadScreen="page * 10"
       >
         <u-list-item v-for="(item, index) in dataList" :key="index">
-          <workCard :item="item" @handleDetail="handleDetail"></workCard>
+          <workCard
+            :item="item"
+            :index="index"
+            @handleDetail="handleDetail"
+          ></workCard>
         </u-list-item>
 
         <u-list-item v-if="dataList.length === 0">
@@ -47,9 +51,10 @@
 </template>
 
 <script>
-import workCard from "../../components/workCard.vue";
+import workCard from "../components/workCard.vue";
 
 import { workorderPage } from "@/api/pda/workOrder.js";
+import { getOutsourceList } from "@/api/pda/outsourcing.js";
 let [isEnd] = [false];
 export default {
   components: {
@@ -74,15 +79,12 @@ export default {
       let params = {
         pageNum: this.page,
         size: this.size,
-        workOrderType: 2,
-        customerClient: 2,
-        status: [4, 5, 6, 7],
         ...this.searchFrom,
       };
 
       isEnd = false;
 
-      const res = await workorderPage(params);
+      const res = await getOutsourceList(params);
 
       if (params.pageNum === 1) {
         this.dataList = [];
@@ -103,8 +105,9 @@ export default {
     },
 
     handleDetail(item) {
-      let url = "/pages/pda/workOrder/extrusionMolding/index";
-      url += `?id=${item.id}&title=${item.taskName}`;
+      console.log(item, "返回的数据");
+      let url = "/pages/pda/outsourcing/components/outsourcingDetail";
+      url += `?item=${JSON.stringify(item)}`;
 
       uni.navigateTo({
         url,