ysy 2 rokov pred
rodič
commit
529fb29aee

+ 1 - 0
api/pda/workOrder.js

@@ -219,3 +219,4 @@ export async function listWorkReport(params) {
 	}
 	return Promise.reject(data.message);
 }
+

+ 11 - 5
pages.json

@@ -1458,11 +1458,17 @@
 			}
 		},
 		{
-			"path" : "pages/pda/workOrder/index/details",
-			"style" : 
-			{
-		"navigationStyle": "custom",
-		"navigationBarTextStyle": "white"
+			"path": "pages/pda/workOrder/index/details",
+			"style": {
+				"navigationStyle": "custom",
+				"navigationBarTextStyle": "white"
+			}
+		},
+		{
+			"path": "pages/pda/sample/index/index",
+			"style": {
+				"navigationStyle": "custom",
+				"navigationBarTextStyle": "white"
 			}
 		}
 

+ 22 - 25
pages/index/index.vue

@@ -1,9 +1,7 @@
 <template>
 	<view>
-		<uni-nav-bar fixed="true" statusBar="true" title="工作中心">
-			<template slot="float">
-				<view class="nav-icon-caozuo iconfont icon-saoyisao" @click="toScan"></view>
-			</template>
+		<uni-nav-bar fixed="true" statusBar="true" title="工作中心" right-icon="scan" @clickRight="HandlScanCode">
+
 		</uni-nav-bar>
 		<view>
 			<CellTip title="生产管理"></CellTip>
@@ -90,7 +88,7 @@
 				src1: "https://cdn.uviewui.com/uview/album/1.jpg",
 				//生产类
 				productionList: [
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "生产工单",
@@ -101,13 +99,13 @@
 						title: "领料",
 						link_url: "/pages/pda/picking/index/index",
 					},
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "投料",
 						link_url: "/pages/pda/feeding/index/index",
 					},
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "退料",
@@ -118,19 +116,19 @@
 						title: "不合格品处置",
 						link_url: "/pages/pda/nonconforming/index/index",
 					},
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "副产品回收",
 						link_url: "/pages/pda/by_product_recovery/index/index",
 					},
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "工单交接",
 						link_url: "/pages/pda/work_order_handover/index/index",
 					},
-					
+
 					{
 						class: "iconfont icon-gongdanguanli",
 						title: "工单详情",
@@ -310,23 +308,22 @@
 					url: url,
 				});
 			},
-			toScan() {
-				uni.navigateTo({
-					url: "/pages/standing_book/detail/detail",
-				});
+			HandlScanCode() {
+
+
+				let _this = this
 				uni.scanCode({
-					success: (res) => {
-						let code = res.result;
-						// code 第一个字符为0 为料框 否则为物料
-						uni.navigateTo({
-							url: "/pages/standing_book/detail/detail",
-						});
-					},
-					fail: (err) => {
-						console.log(err);
-					},
-				});
+					success: function(res) {
+						_this.scantoRouter(res.result)
+					}
+				})
+
 			},
+			scantoRouter(result) {
+				uni.navigateTo({
+					url: `/pages/pda/workOrder/extrusionMolding/index?id=${result}`
+				})
+			}
 		},
 	};
 </script>

+ 2 - 2
pages/login/login.vue

@@ -10,8 +10,8 @@
     <view class="login-title">
       <label>智慧工厂信息化系统</label>
       <!-- <text>株洲硬质合金集团型材分公司</text> -->
-	  <!-- <text>湖南碳谷新材料有限公司</text> -->
-	   <text >株洲索尔切削刀具有限公司</text> 
+	  <text>湖南碳谷新材料有限公司</text>
+	   <!-- <text >株洲索尔切削刀具有限公司</text> -->
 	  
     </view>
     <view>

+ 24 - 6
pages/pda/components/bottomOperate.vue

@@ -4,10 +4,10 @@
 		<view class="nav_box rx-cc" @click="open">
 			<image class="open_icon" :class="{open_icon_reversal : isOperate}" src="~@/static/pda/open.svg"></image>
 		</view>
-
+           
 
 		<view class="operate_list" v-show="isOperate">
-			<view v-for="(item, index) in btnList[state]" :key="index" class="list rx-bc" @click="operate(item.type)">
+			<view v-for="(item, index) in btnList[btnState]" :key="index" class="list rx-bc" @click="operate(item.type)">
 				<view class="round">{{index + 1}}</view>
 				<view class="name">{{item.name}}</view>
 				<image class="arrow_right" src="~@/static/pda/arrow_right.svg"></image>
@@ -31,9 +31,8 @@
 <script>
 	export default {
 		props: {
-			state: String,
-
-
+			state: String | Number,
+			
 		},
 
 		watch: {
@@ -45,6 +44,14 @@
 					this.btnsList = newVal
 				}
 			},
+			
+			state: {
+				immediate: true,
+				deep: true,
+				handler(newVal) {
+					this.btnState = newVal
+				}
+			}
 		},
 
 		data() {
@@ -52,8 +59,9 @@
 				isOperate: false,
 
 				btnsList: [],
+				btnState: 1,
 				btnList: {
-					'1': [{
+					1: [{
 							name: '领料',
 							type: 'picking'
 						},
@@ -71,6 +79,16 @@
 						}
 
 
+					],
+					2: [
+						{
+							name: '取样',
+							type: 'sample'
+						},
+						{
+							name: '报工',
+							type: 'jobBooking'
+						},
 					]
 				}
 			}

+ 1 - 1
pages/pda/feeding/components/feedBom.js

@@ -37,7 +37,7 @@ export const tableHeader = selectEquiType => {
 				},
 				
 				{
-					label: '模具编',
+					label: '模具编',
 					prop: 'codeNumber',
 					write: false,
 					extInfo: false

+ 2 - 2
pages/pda/feeding/components/instanceBom.vue

@@ -4,7 +4,7 @@
 			<view class="name">物料清单</view>
 		</view>
 
-		<view class="material rx-ss" v-for="(mate, idx) in list">
+		<view class="material rx-ss" v-for="(mate, idx) in list" :key="idx">
 			<view class="left rx-ss" @click="getDelete(idx)" v-if='workOrderId'>
 				<uni-icons custom-prefix="iconfont" type="icon-shanchu" size="20" color="#fa3534"></uni-icons>
 			</view>
@@ -18,7 +18,7 @@
 				
 				<view class="item"  >
 					<view class="lable rx-cc">包装库存</view>
-					<view class="content">{{ mate.availableCountBase }}/ {{ mate.minUnit}}</view>
+					<view class="content">{{ mate.packingCountBase }}/ {{ mate.minUnit}}</view>
 				</view>
 
 

+ 20 - 11
pages/pda/feeding/details.vue

@@ -183,20 +183,29 @@
 					this.List = res.map(m => {
 						m.workOrderId = m.id
 
-						if (!m.hasOwnProperty('equipmentList')) {
-							m.equipmentList = [] // 设备
+						m.instanceList = [] // 物料
+						m.equipmentList = [] // 设备
+						m.modelList = [] // 模具
+						m.aridRegionList = [] // 干燥区
+
+						if (m.pickOutInList.length > 0) {
+							m.pickOutInList.forEach(f => {
+								if (f.rootCategoryLevelId == 1) {
+									m.instanceList.push(f)
+								} else if (f.rootCategoryLevelId == 4) {
+									m.modelList.push(f)
+								} else if (f.rootCategoryLevelId == 5) {
+									m.modelList.push(f)
+								} else if (f.rootCategoryLevelId == 11) {
+									m.aridRegionList.push(f)
+								}
+							})
 						}
 
-						if (!m.hasOwnProperty('modelList')) {
-							m.modelList = [] // 模具
-						}
 
-						if (!m.hasOwnProperty('instanceList')) {
-							m.instanceList = [] // 投料
-						}
-						if (!m.hasOwnProperty('aridRegionList')) {
-							m.aridRegionList = [] // 干燥区
-						}
+
+						// 处理字段
+						m.quality == '' ? m.quality = {} : ''
 
 
 

+ 24 - 1
pages/pda/jobBooking/components/jobBom.vue

@@ -12,6 +12,17 @@
 
 			<view class="content_table">
 
+
+		<view class="item rx-sc">
+					<view class="rx  ">
+						<view class="lable lable220 rx-cc ">上道工序生产数量</view>
+						<view class="content ">
+						  {{ item.formedNumLast}}
+						</view>
+					</view>
+				</view>
+				
+				
 				<view class="item rx-sc">
 					<view class="rx ww55 ">
 						<view class="lable lable150 rx-cc ">要求生产数量</view>
@@ -31,6 +42,8 @@
 					</view>
 
 				</view>
+				
+		
 
 
 				<view class="item rx-sc">
@@ -51,6 +64,10 @@
 					</view>
 
 				</view>
+				
+	
+				
+				
 
 
 
@@ -136,7 +153,8 @@
 	import {
 		treeByPid,
 		pageeLedgerMain,
-		assetPage
+		assetPage,
+		
 	} from '@/api/pda/workOrder.js'
 import { number } from 'echarts'
 	export default {
@@ -188,6 +206,7 @@ import { number } from 'echarts'
 
 
 			this.getTreeList()
+				
 		},
 		methods: {
 
@@ -313,6 +332,10 @@ import { number } from 'echarts'
 					border-right: 2rpx solid $border-color;
 					flex-shrink: 0;
 				}
+				.lable220{
+					width: 220rpx !important;
+					font-size: 24rpx;
+				}
 
 				.lable150 {
 					width: 156rpx !important;

+ 58 - 37
pages/pda/jobBooking/components/oneJobBom.vue

@@ -1,22 +1,24 @@
 <template>
 	<view>
 		<view class="title_box rx-bc">
-			<view class="name">报工信息</view>
-
-
+			<view class="name">报工信息: ({{list.length || 0}})个</view>
+        
 		</view>
 
 
-		<view class="material ">
-
-
-			<view class="content_table">
+		<view class="material " v-for="(it, idx) in list" :key="idx">
+      
 
+			<view class="content_table" >
+             
 				<view class="item rx-sc">
 					<view class="rx">
-						<view class="lable lable150 rx-cc ">物料编码</view>
+						<view class="lable lable190 rx-cc ">
+
+							<view class="round">{{idx + 1}}</view>物料编码
+						</view>
 						<view class="content rx-sc">
-							<view>tgcc001061001001</view>
+							<view>{{it.code}}</view>
 						</view>
 					</view>
 				</view>
@@ -25,7 +27,7 @@
 					<view class="rx">
 						<view class="lable lable150 rx-cc ">名称</view>
 						<view class="content rx-sc">
-							<view>X5 CC筒10#</view>
+							<view>{{it.name}}</view>
 						</view>
 					</view>
 				</view>
@@ -34,7 +36,7 @@
 					<view class="rx">
 						<view class="lable lable150 rx-cc ">型号</view>
 						<view class="content rx-sc">
-							<view>1065*1019x619</view>
+							<view>{{it.modelType}}</view>
 						</view>
 					</view>
 				</view>
@@ -45,7 +47,7 @@
 					<view class="rx ww50 ">
 						<view class="lable lable150 rx-cc ">物料代号</view>
 						<view class="content content_num">
-							<input class="uni-input" v-model="item.workReportInfo.formedNum"></input>
+							<input class="uni-input" v-model="it.extInfo.materielCode"></input>
 
 						</view>
 					</view>
@@ -53,7 +55,7 @@
 					<view class="rx ww50">
 						<view class="lable lable150 rx-cc ">客户代号</view>
 						<view class="content content_num">
-							<input class="uni-input" v-model="item.workReportInfo.formedWeight"></input>
+							<input class="uni-input" v-model="it.extInfo.clientCode"></input>
 						</view>
 					</view>
 
@@ -64,7 +66,7 @@
 					<view class="rx ww50 ">
 						<view class="lable lable150 rx-cc ">刻码</view>
 						<view class="content content_num content_H">
-							<input class="uni-input" v-model="item.workReportInfo.formedNum"></input>
+							<input class="uni-input" v-model="it.extInfo.engrave"></input>
 
 						</view>
 					</view>
@@ -72,7 +74,7 @@
 					<view class="rx ww50">
 						<view class="lable lable150 rx-cc ">位置</view>
 						<view class="content ">
-							<zxz-uni-data-select :localdata="positionList" v-model="item.categoryId" dataValue='id'
+							<zxz-uni-data-select :localdata="positionList" v-model="it.position" dataValue='id'
 								format='{name}' dataKey="code" filterable :clear='false'></zxz-uni-data-select>
 						</view>
 					</view>
@@ -98,20 +100,24 @@
 					<view class="tr row rx-sc">
 						<view class="item ww25">32.67</view>
 						<view class="item ww25 content_num">
-							<input class="uni-input" v-model="item.workReportInfo.formedNum"></input>
+							<input class="uni-input" v-model="it.formedNum"></input>
 						</view>
 						<view class="item ww25">
-							<zxz-uni-data-select :localdata="inspectionList" v-model="item.categoryId" dataValue='id'
+							<zxz-uni-data-select :localdata="inspectionList" v-model="it.inspection" dataValue='id'
 								format='{name}' dataKey="code" filterable :clear='false'></zxz-uni-data-select>
 						</view>
 						<view class="item ww25">
-							<zxz-uni-data-select :localdata="inspectionList" v-model="item.categoryId" dataValue='id'
-								format='{name}' dataKey="code" filterable :clear='false'></zxz-uni-data-select>
+							<zxz-uni-data-select :localdata="stepsList" v-model="it.disposeOf" dataValue='id'
+								format='{taskTypeName}' dataKey="code" filterable :clear='false'></zxz-uni-data-select>
 						</view>
 
 					</view>
 
 
+
+
+
+
 				</view>
 
 
@@ -127,11 +133,8 @@
 </template>
 
 <script>
-	import baTreePicker from '@/components/ba-tree-picker/ba-tree-picker.vue'
 	import {
-		treeByPid,
-		pageeLedgerMain,
-		assetPage
+		getTaskInstanceList
 	} from '@/api/pda/workOrder.js'
 	export default {
 		props: {
@@ -139,11 +142,12 @@
 				type: Object,
 				default: () => {}
 			},
-			notFormed: {
+			
+			list: {
 				type: Array,
 				default: () => []
-			},
-
+			}
+		
 
 
 
@@ -151,21 +155,14 @@
 
 		watch: {
 
-			notFormed: {
-				immediate: true,
-				deep: true,
-				handler(newVal) {
-					console.log(newVal)
-					this.notFormedList = newVal
-
-				}
-			}
 		},
 
 
 		data() {
 			return {
 				classificationList: [],
+
+				stepsList: [],
 				positionList: [{
 						id: '1',
 						name: '内'
@@ -196,7 +193,7 @@
 		},
 		created() {
 
-
+			this.getSteps()
 
 		},
 		methods: {
@@ -204,7 +201,12 @@
 
 
 
-
+			getSteps() {
+				console.log(this.item)
+				getTaskInstanceList(this.item.workOrderId).then(res => {
+					this.stepsList = res
+				})
+			},
 
 
 
@@ -273,6 +275,11 @@
 					font-size: 24rpx;
 				}
 
+				.lable190 {
+					width: 190rpx !important;
+					font-size: 24rpx;
+				}
+
 				.ww80 {
 					width: 80rpx;
 				}
@@ -428,4 +435,18 @@
 
 
 	}
+
+	.round {
+		width: 32rpx;
+		height: 32rpx;
+		line-height: 32rpx;
+		text-align: center;
+		border-radius: 50%;
+		background: $theme-color;
+		font-size: 24rpx;
+		font-style: normal;
+		font-weight: 400;
+		color: #fff;
+		margin-right: 18rpx;
+	}
 </style>

+ 13 - 7
pages/pda/jobBooking/index/index.vue

@@ -14,15 +14,17 @@
 
 					<deviceBom v-if='objData.equipmentList.length != 0' :list='objData.equipmentList'></deviceBom>
 
-					<modelBom v-if='objData.modelList.length != 0' :list='objData.modelList'  pattern='job' ref='modelRef'>
+					<modelBom v-if='objData.modelList.length != 0' :list='objData.modelList' pattern='job'
+						ref='modelRef'>
 					</modelBom>
 
 
 
 					<jobBom :item='objData' :palletList='objData.palletList' :notFormed='objData.notFormedList'
 						@penalize='penalize' @modeNum='modeNum'></jobBom>
-						
-						<oneJobBom :item='objData' :palletList='objData.palletList' :notFormed='objData.notFormedList'></oneJobBom>
+
+					<oneJobBom v-if='objData.instanceList &&  objData.instanceList.length != 0' :item='objData' :list='objData.instanceList'  >
+					</oneJobBom>
 
 					<byProductBom v-if='objData.productRecycleList.length != 0 ' :list='objData.productRecycleList'
 						@penalize='penalize'>
@@ -108,7 +110,7 @@
 	import deviceBom from '../../feeding/components/deviceBom.vue'
 	import modelBom from '../../feeding/components/modelBom.vue'
 	import jobBom from '../components/jobBom.vue'
-	import oneJobBom  from '../components/oneJobBom.vue'
+	import oneJobBom from '../components/oneJobBom.vue'
 	import byProductBom from '../components/byProductBom'
 	import turnoverBom from '../components/turnoverBom.vue'
 	import aridRegion from '../../feeding/components/aridRegion.vue'
@@ -343,9 +345,13 @@
 					if (!this.objData.hasOwnProperty('aridRegionList')) {
 						this.objData['aridRegionList'] = []
 					}
+			
+				
+					
+					
 					this.objData.palletList = [{
 						categoryLevelId: '',
-						categoryLevelName: '',
+						categoryLevelName: '', 
 						categoryId: '',
 						rootCategoryLevelId: '',
 						code: '',
@@ -446,9 +452,9 @@
 				this.searchShow = false
 
 			},
-			
+
 			modeNum(num) {
-				if(this.objData.modelList.length == 0) {
+				if (this.objData.modelList.length == 0) {
 					return false
 				}
 				this.$refs.modelRef.setNum(num)

+ 1 - 1
pages/pda/picking/components/instanceBom.vue

@@ -28,7 +28,7 @@
 				
 				<view class="item">
 					<view class="lable rx-cc">包装库存</view>
-					<view class="content">{{mate.availableCountBase}}/ {{mate.minUnit}}</view>
+					<view class="content">{{mate.packingCountBase}}/ {{mate.minUnit}}</view>
 				</view>
 
 

+ 1 - 1
pages/pda/picking/components/modelBom.vue

@@ -16,7 +16,7 @@
 			<view class="content_table">
 
 				<view class="item " v-for="(tab, tIdx) in tableH(5)" :key="tIdx">
-
+         
 					<view class="item " v-if="Array.isArray(tab.prop) && item.automatic == 2">
 						<view class="lable lable300 rx-sc"> {{ item[tab.prop[0]]  }}</view>
 						<view class="content">

+ 14 - 3
pages/pda/picking/components/pickBom.js

@@ -10,15 +10,26 @@ export const tableHeader = selectEquiType => {
 					write: false,
 					extInfo: false
 				},
+				{
+					label: '型号',
+					prop: 'modelType',
+					write: false,
+					extInfo: false
+				},
+				{
+					label: '规格',
+					prop: 'specification',
+					write: false,
+					extInfo: false
+				},
 
-			
 				// {
 				// 	label: '已冲压次数',
 				// 	prop: 'startCyTimes',
 				// 	write: false,
 				// 	extInfo: true
 				// },
-				
+
 
 				{
 					label: '最大冲压次数',
@@ -34,7 +45,7 @@ export const tableHeader = selectEquiType => {
 
 
 
-	
+
 
 	}
 

+ 396 - 0
pages/pda/sample/components/sampleBom.vue

@@ -0,0 +1,396 @@
+<template>
+	<view>
+		<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.diagramLast.taskTypeName}}
+					</view>
+				</view>
+
+
+
+
+
+				<view class="item rx-sc">
+					<view class="rx ww55 ">
+						<view class="lable  rx-cc">数量</view>
+						<view class="content rx-sc">
+							<view>{{item.formedNum}}</view>
+							<view class="unit">{{item.unit}}</view>
+						</view>
+					</view>
+
+					<view class="rx ww45">
+						<view class="lable rx-cc ww80">重量</view>
+						<view class="content content_num">
+							<view>{{item.formedWeight}}</view>
+							<view class="unit">{{item.weightUnit}}</view>
+
+						</view>
+					</view>
+
+				</view>
+
+				<view class="item">
+					<view class="lable rx-cc">取样数量</view>
+					<view class="content content_num  rx-sc">
+						<input class="uni-input" v-model="item.sampleNum" type='digit'
+							@blur='item.sampleNum > item.formedNum ?  item.sampleNum = item.formedNum : item.sampleNum'></input>
+						<view class="unit">{{item.unit}}</view>
+						<view class="penalize" @click="penalize">处置
+							{{Number(item.sampleNum || 0) - Number(item.recoveryNum || 0)  }}</view>
+
+					</view>
+				</view>
+
+				<view class="item">
+					<view class="lable rx-cc">回收数量</view>
+					<view class="content content_num  rx-sc">
+						<input class="uni-input" v-model="item.recoveryNum" type='digit'
+							@blur='item.recoveryNum > item.sampleNum ?  item.recoveryNum = item.sampleNum : item.recoveryNum'></input>
+						<view class="unit">{{item.unit}}</view>
+
+					</view>
+				</view>
+
+
+
+
+
+
+			</view>
+
+			<view class="content_table2" v-if="item.sampleList.length > 0">
+				<view class="head row rx-sc">
+					<view class="item ww30">数量</view>
+					<view class="item ww55">处置</view>
+					<view class="item ww15">操作</view>
+				</view>
+
+				<view class="table">
+
+					<view class="tr row rx-sc" v-for="(item, index) in item.sampleList" :key='index'>
+
+						<view class="item ww30 content_num">
+							<input class="uni-input" v-model="item.num"></input>
+						</view>
+
+						<view class="item ww55  content_num">
+							<zxz-uni-data-select :localdata="warehouseList" v-model="item.warehouseId" dataValue='id'
+								dataKey="name" filterable format='{name}' ></zxz-uni-data-select>
+						</view>
+						<view class="item ww15">
+							<view class="left rx-ss" @click="getDelete(index)">
+								<uni-icons custom-prefix="iconfont" type="icon-shanchu" size="20"
+									color="#fa3534"></uni-icons>
+							</view>
+						</view>
+
+					</view>
+
+
+
+
+
+
+				</view>
+
+
+			</view>
+
+
+		</view>
+
+
+	</view>
+</template>
+
+<script>
+	import {
+
+		getWarehouseList,
+
+	} from '@/api/pda/workOrder.js'
+
+	export default {
+		props: {
+			item: {
+				type: Object,
+				default: () => {}
+			},
+
+
+		},
+		data() {
+			return {
+				warehouseList: []
+			}
+		},
+		created() {
+			this.getWarehouseListFn()
+		},
+		methods: {
+			getWarehouseListFn() {
+				getWarehouseList().then(res => {
+					this.warehouseList = res
+				})
+			},
+			penalize() {
+				if (Number(this.item.sampleNum || 0) - Number(this.item.recoveryNum || 0) <= 0) {
+
+					uni.showToast({
+						icon: 'none',
+						title: '处置数量不能小于等于0'
+					})
+					return false
+				}
+				this.item.sampleList.push({
+					num: null,
+					warehouseId: null
+				})
+			},
+
+			getDelete(idx) {
+				this.item.sampleList.splice(idx, 1)
+			},
+		}
+	}
+</script>
+
+<style lang="scss" scoped>
+	.title_box {
+		margin-top: 28rpx;
+
+		.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: 156rpx;
+					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;
+					}
+
+					.penalize {
+						width: 200rpx;
+						line-height: 60rpx;
+						background: $theme-color;
+						font-size: 24rpx;
+						text-align: center;
+						color: #fff;
+					}
+
+				}
+
+
+				.pd4 {
+					padding: 4rpx 8rpx;
+				}
+
+
+
+				&:last-child {
+					border-bottom: none;
+				}
+			}
+
+			.ww55 {
+				width: 55%;
+			}
+
+			.ww45 {
+				width: 45%;
+			}
+		}
+
+
+		.content_table2 {
+			width: 100%;
+			margin-top: 8rpx;
+
+
+			.row {
+				width: 100%;
+
+
+				.item {
+					padding: 8rpx 0;
+					color: #404446;
+					font-size: 28rpx;
+					padding-left: 12rpx;
+
+				}
+
+				.left {
+					width: 40rpx;
+				}
+
+				.ww30 {
+					width: 30%;
+				}
+
+				.ww55 {
+					width: 55%;
+				}
+
+				.ww15 {
+					width: 15%;
+				}
+			}
+
+			.head {
+				height: 64rpx;
+				background: #F7F9FA;
+				border-top: 2rpx solid #E3E5E5;
+				border-left: 2rpx solid #E3E5E5;
+
+				.item {
+					height: 64rpx;
+					line-height: 64rpx;
+					border-right: 2rpx solid #E3E5E5;
+					box-sizing: border-box;
+				}
+			}
+
+
+
+			.tr {
+				border-top: 2rpx solid #E3E5E5;
+				border-left: 2rpx solid #E3E5E5;
+
+
+				.item {
+					font-size: 24rpx;
+					min-height: 64rpx;
+					display: flex;
+					align-items: center;
+					border-right: 2rpx solid #E3E5E5;
+					box-sizing: border-box;
+					white-space: normal;
+					word-break: break-all;
+
+				}
+
+				&:last-child {
+					border-bottom: 2rpx solid #E3E5E5;
+
+
+				}
+			}
+		}
+	}
+
+
+	.content_num {
+		display: flex;
+		align-items: center;
+		padding: 0 4rpx;
+
+		/deep/ .uni-input-input {
+			border: 2rpx solid #F0F8F2;
+			width: 260rpx;
+			background: #F0F8F2;
+			color: $theme-color;
+		}
+
+
+	}
+</style>

+ 139 - 0
pages/pda/sample/index/index.vue

@@ -0,0 +1,139 @@
+<template>
+	<view class="content-box">
+		<uni-nav-bar fixed="true" statusBar="true" left-icon="back" :title="title" background-color="#F7F9FA"
+			color="#000" @clickLeft="back">
+		</uni-nav-bar>
+		<view class="list_box">
+			<u-list @scrolltolower="scrolltolower">
+				<view class="card_box" v-for="(item,index) in List" :key="index">
+					<workOrderBom :item='item' v-if='item' :isDetails='true'></workOrderBom>
+
+					<sampleBom :item='item.quality' v-if='item.quality'></sampleBom>
+
+				</view>
+			</u-list>
+		</view>
+		
+		<view class="bottom-wrapper">
+			<view class="btn_box" @click="save">一键报工</view>
+		</view>
+
+	</view>
+
+	</view>
+</template>
+
+<script>
+	import {
+		workorderList,
+
+	} from '@/api/pda/workOrder.js'
+	import workOrderBom from '../../feeding/components/workOrderBom.vue'
+	import sampleBom from '../components/sampleBom.vue'
+	import {
+		batchSave
+	} from '@/api/pda/feeding.js'
+	export default {
+		components: {
+			workOrderBom,
+			sampleBom
+		},
+		data() {
+			return {
+				title: null,
+				id: null,
+				taskId: null,
+				List: []
+			}
+		},
+
+		onLoad(options) {
+			this.title = options.taskName ? options.taskName : '质检'
+			this.id = options.workOrderId
+			this.taskId = options.taskId
+			this.getList()
+		},
+		methods: {
+			getList() {
+				workorderList({
+					ids: [this.id],
+					taskId: this.taskId
+				}).then(res => {
+					this.List = res.map(m => {
+						m.workOrderId = m.id
+                        m.quality['sampleList'] = []
+						delete m.id
+						return {
+							...m
+						}
+					})
+				})
+			},
+
+			scrolltolower() {},
+			
+			save() {
+			    
+				console.log(this.List)
+			    return false
+			
+				batchSave(this.List).then(res => {
+					uni.navigateBack()
+			
+				})
+			},
+
+		}
+	}
+</script>
+
+
+<style lang="scss" scoped>
+	.content-box {
+		height: 100vh;
+		overflow: hidden;
+		display: flex;
+		flex-direction: column;
+
+	}
+
+	.list_box {
+		flex: 1;
+		overflow: hidden;
+		padding: 4rpx 0;
+
+		.u-list {
+			height: 100% !important;
+		}
+
+		.card_box {
+			padding: 16rpx 24rpx;
+		}
+
+
+
+	}
+
+	.bottom-wrapper {
+		.btn_box {
+			width: 750rpx;
+			height: 88rpx;
+			line-height: 88rpx;
+			background: $theme-color;
+			text-align: center;
+			font-size: 36rpx;
+			font-style: normal;
+			font-weight: 400;
+			color: #fff;
+		}
+	}
+
+
+	.operate_box {
+		padding: 10rpx 160rpx;
+
+		/deep/ .u-button {
+			width: 160rpx;
+		}
+	}
+</style>

+ 25 - 6
pages/pda/workOrder/extrusionMolding/index.vue

@@ -22,6 +22,7 @@
 					<text>{{ info.code }}</text>
 				</view>
 
+
 				<view class="item_list rx-bc">
 					<text class="lable">计划编号</text>
 					<text>{{ info.productionPlanCode }}</text>
@@ -57,14 +58,14 @@
 
 
 				<view class="item_list rx-bc">
-					<text class="lable">要求成型数量</text>
+					<text class="lable">要求生产数量</text>
 					<text>{{info.formingNum }} {{info.weightUnit}} </text>
 				</view>
 
 
 
 				<view class="item_list rx-bc">
-					<text class="lable">要求成型重量</text>
+					<text class="lable">要求生产重量</text>
 					<text>{{ info.formingWeight }} {{info.weightUnit}}</text>
 				</view>
 
@@ -142,7 +143,7 @@
 		</view>
 
 		<view class="bottom-wrapper">
-			<bottomOperate state='1' @operate='operate'></bottomOperate>
+			<bottomOperate @operate='operate' :state='currentType'></bottomOperate>
 		</view>
 
 	</view>
@@ -182,7 +183,7 @@
 
 				currentTaskId: null,
 				currentTaskName: null,
-
+				currentType: 1,
 
 			}
 		},
@@ -228,6 +229,8 @@
 					// }
 					this.stepsList = res
 
+					this.setTypeFn()
+
 
 
 				})
@@ -237,6 +240,8 @@
 				workorderInfo(this.id).then(res => {
 					this.info = res
 					this.taskId = res.taskId
+					this.setTypeFn()
+
 
 					this.feedStatus()
 					uni.hideLoading();
@@ -244,7 +249,15 @@
 					uni.hideLoading();
 				})
 			},
-
+			setTypeFn() {
+				
+					this.stepsList.length && this.stepsList.find(f => {
+						if (f.taskId == this.taskId) {
+							this.currentType = f.type
+						}
+					})
+			
+			},
 
 			feedStatus() {
 				let taskId = this.currentTaskId || this.taskId
@@ -256,7 +269,7 @@
 			selectStep(item) {
 				this.currentTaskId = item.taskId
 				this.currentTaskName = item.taskTypeName
-
+				this.currentType = item.type
 				this.feedStatus()
 			},
 
@@ -308,6 +321,12 @@
 					})
 
 
+				} else if (type == 'sample') {
+					url = '/pages/pda/sample/index/index'
+					url += `?workOrderId=${this.info.id}&taskId=${taskId }&taskName=${taskName}`
+					uni.navigateTo({
+						url
+					})
 				}
 
 			},