Procházet zdrojové kódy

销售计划页面提交

LAPTOP-16IUEB3P\Lenovo před 3 roky
rodič
revize
1ac510baad

+ 1 - 0
src/enum/dict.js

@@ -14,6 +14,7 @@ export default {
   生产状态: 'production_status',
   按单按库: 'order_library',
   紧急程度: 'urgent_type',
+  订单计划类型: 'plan_type'
 };
 
 export const numberList = ['patrol_cycle'];

+ 9 - 9
src/views/saleOrder/components/create-order.vue

@@ -144,16 +144,16 @@
 				{name:'222',model:'型号2'}
 			]
 		},
-		// 表单验证规则
+	// 表单验证规则
 		rules: {
-		  date: [
-		    {
-		      required: true,
-		      message: '请选择交付日期',
-		      trigger: 'change'
-		    }
-		  ]
-		},
+				date: [
+					{
+						required: true,
+						message: '请选择交付日期',
+						trigger: 'change'
+					}
+				]
+			},
       };
     },
     computed: {

+ 138 - 0
src/views/saleOrder/components/group-order.vue

@@ -0,0 +1,138 @@
+<template>
+  <ele-modal
+    :visible.sync="visible"
+    title="订单组合"
+    width="70vw"
+    append-to-body
+  >
+    <el-form ref="form" :model="form" :rules="rules" label-width="90px">
+		<el-row :gutter="15">
+			<el-col v-bind="styleResponsive ? { lg: 8, md: 12 } : { span: 8 }">
+			  <el-form-item label="组合编码:">
+			     <el-input clearable :maxlength="20" v-model="form.ddh" disabled/>
+			  </el-form-item>
+			</el-col>
+			<el-col v-bind="styleResponsive ? { lg: 16, md: 16 } : { span: 16 }">
+			   <div class="modal-word">
+				   <div class="word-div">累计交付数量  1000</div>
+				   <div class="word-div">累计未排产数量  600</div>
+			   </div>
+			</el-col>
+		</el-row>
+		<el-table
+		  :data="form.tableList"
+		  border
+		>
+		  <el-table-column label="序号" align="center" width="60">
+		    <template slot-scope="scope">
+		      <span>{{ scope.$index + 1 }}</span>
+		    </template>
+		  </el-table-column>
+		  <el-table-column label="销售订单号" align="center" prop="name">
+		  </el-table-column>
+		  <el-table-column label="行号" align="center" prop="name">
+		  </el-table-column>
+		  <el-table-column label="订单类型" align="center" prop="model">
+		  </el-table-column>
+		  <el-table-column label="交付数量" align="center" prop="num">
+		  </el-table-column>
+		  <el-table-column label="是否排产" align="center" prop="model">
+		  </el-table-column>
+		  <el-table-column label="下达时间" align="center" prop="model">
+		  </el-table-column>
+		  <el-table-column label="交付日期" align="center" prop="model">
+		  </el-table-column>
+		  <el-table-column label="客户名称" align="center" prop="model">
+		  </el-table-column>		 
+		  <el-table-column label="交换要求" align="center" prop="measuringUnit">
+		  </el-table-column>
+		  <el-table-column label="操作" align="center" width="70">
+		    <template slot-scope="scope">
+		      <el-button
+		        type="text"
+		        @click="handleDeleteItem(scope.$index)"
+		        >删除</el-button
+		      >
+		    </template>
+		  </el-table-column>
+		</el-table>
+    </el-form>
+    <template v-slot:footer>
+      <el-button @click="cancel">取消</el-button>
+      <el-button type="primary" @click="save" :loading="loading">
+        确定
+      </el-button>
+    </template>
+  </ele-modal>
+</template>
+
+<script>
+	export default {
+    data() {
+      return {
+        visible: false,
+		tableList:[],
+		loading:false,
+		form:{
+			tableList:[
+				{name:'122',model:'型号1'},
+				{name:'222',model:'型号2'}
+			]
+		},
+		// 表单验证规则
+		rules: {
+		  date: [
+		    {
+		      required: true,
+		      message: '请选择交付日期',
+		      trigger: 'change'
+		    }
+		  ]
+		},
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+    created(){
+    },
+    methods: {
+	  open () {
+	    this.visible = true;
+	  },
+      cancel () {
+		this.form = {
+			tableList:[]
+		}
+		this.$refs.form.clearValidate();
+        this.visible = false;
+      },
+	  // 删除产品
+	  handleDeleteItem (index) {
+	    this.form.tableList.splice(index, 1)
+	  },
+	  /* 保存编辑 */
+	  save() {
+	    this.$refs.form.validate((valid) => {
+	      if (!valid) {
+	        return false;
+	      }
+	    });
+	  },
+	  
+    }
+  };
+</script>
+<style lang="scss" scoped>
+	.modal-word{
+		display: flex;
+		align-items: center;
+		justify-content:flex-end;
+	}
+	.word-div{
+		margin-right: 20px;
+	}
+</style>

+ 16 - 3
src/views/saleOrder/components/order-search.vue

@@ -106,10 +106,10 @@
       </el-col>
 	  <el-col v-bind="styleResponsive ? { lg: 24, md: 24 } : { span: 24 }">
 		  <el-form-item label-width="0px">
-			  <el-button>转生产计划</el-button>
+			  <el-button @click="goProduct">转生产计划</el-button>
 			  <el-button type="primary">订单刷新</el-button>
 			  <el-button type="success" @click="toCreate">创建订单</el-button>
-			  <el-button type="info">订单组合</el-button>
+			  <!-- <el-button type="info" @click="toGroup">订单组合</el-button> -->
 			  <el-button type="warning" @click="toImport">批量导入</el-button>
 			  <el-button type="danger">批量删除</el-button>
 		  </el-form-item>			  
@@ -120,16 +120,20 @@
 		<import-exception ref="importDialog"> </import-exception>
 		<!-- 创建订单 -->
 		<create-order ref="createDialog"> </create-order>
+		<!-- 订单组合 -->
+		<group-order ref="groupDialog"> </group-order>
   </el-form>
 </template>
 
 <script>
 	import ImportException from '../components/import-exception.vue'
 	import CreateOrder from '../components/create-order.vue'
+	import GroupOrder from '../components/group-order.vue'
 	export default {
 		components: {
 		  ImportException,
-		  CreateOrder
+		  CreateOrder,
+		  GroupOrder
 		},
     data() {
       // 默认表单数据
@@ -175,7 +179,16 @@
 	  },
 	  toCreate(){
 		  this.$refs.createDialog.open()
+	  },
+	  toGroup(){
+		 this.$refs.groupDialog.open() 
+	  },
+	  goProduct(){
+		 this.$router.push({
+		    path: '/saleOrder/salesToProduction'
+		 });
 	  }
+	  
     }
   };
 </script>

+ 4 - 6
src/views/saleOrder/index.vue

@@ -2,6 +2,10 @@
   <div class="ele-body">
     <el-card shadow="never" v-loading="loading">
       <order-search @search="reload"> </order-search>
+	  <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
+	    <el-tab-pane label="待排产" name="first"></el-tab-pane>
+	    <el-tab-pane label="已排产" name="second"></el-tab-pane>
+	  </el-tabs>
       <!-- 数据表格 -->
       <ele-pro-table
         ref="table"
@@ -9,12 +13,6 @@
         :datasource="datasource"
         cache-key="systemRoleTable"
       >
-        <template v-slot:toolbar>
-			  <el-tabs v-model="activeName" type="card" @tab-click="handleClick">
-			    <el-tab-pane label="待排产" name="first"></el-tab-pane>
-			    <el-tab-pane label="已排产" name="second"></el-tab-pane>
-			  </el-tabs>
-        </template>
 		<template v-slot:name='{row}'>
 			<el-link :underline="false" @click="openDetails(row)">
 			  {{ row.name }}

+ 268 - 0
src/views/saleOrder/salesToProduction.vue

@@ -0,0 +1,268 @@
+<template>
+  <div class="ele-body">
+    <el-card shadow="never">
+		<div class="body-title">
+			<div class="title-left">销售订单转生产计划</div>
+			<div class="title-right">
+				<el-button @click="cancel">取消</el-button>
+				<el-button type="primary" @click="toSubmit">
+				  提交计划
+				</el-button>
+			</div>
+		</div>
+		<el-form ref="form" :model="form" :rules="rules" label-width="90px" class="formbox">
+			<el-row :gutter="24">
+				<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+				  <el-form-item label="计划类型:">
+				     <DictSelection dictName="订单计划类型" clearable v-model="form.type">
+				     </DictSelection>
+				  </el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+				  <el-form-item label="生产版本:" prop="edition">
+				     <el-input placeholder="请选择生产版本" readonly v-model="form.edition"></el-input>
+				  </el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+				  <el-form-item label="产线:" prop="productline">
+				     <el-input v-model="form.productline"></el-input>
+				  </el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+				  <el-form-item label="使用改型:" prop="remodel">
+				     <el-checkbox v-model="form.remodel"></el-checkbox>
+				  </el-form-item>
+				</el-col>
+			</el-row>
+			<el-row :gutter="24" class="row-intro">
+				<el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
+				  <el-form-item label="销售单数量:">3</el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 4, md: 12 } : { span: 4 }">
+				  <el-form-item label="订单总数量:">10000</el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
+				  <el-form-item label="订单总重量:">3021.23</el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 5, md: 12 } : { span: 5 }">
+				  <el-form-item label="产品编码:">W30000004536</el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 6, md: 12 } : { span: 6 }">
+				  <el-form-item label="牌号|型号:">YL10.2|BΦ16.0*330(MG)</el-form-item>
+				</el-col>
+				<el-col v-bind="styleResponsive ? { lg: 3, md: 12 } : { span: 3 }">
+				  <el-form-item label="库存数量:">1523</el-form-item>
+				</el-col>
+			</el-row>
+			<el-table
+			  :data="form.tableData"
+			  border
+			>
+			  <el-table-column label="序号" align="center" width="60">
+			    <template slot-scope="scope">
+			      <span>{{ scope.$index + 1 }}</span>
+			    </template>
+			  </el-table-column>
+			  <el-table-column label="销售订单号" align="center" prop="name" width="120">
+			  </el-table-column>
+			  <el-table-column label="行号" align="center" prop="name">
+			  </el-table-column>
+			  <el-table-column label="合同数量" align="center" prop="model">
+			  </el-table-column>
+			  <el-table-column label="合同重量" align="center" prop="model">
+			  </el-table-column>
+			  <el-table-column label="欠交数量" align="center" prop="model">
+			  </el-table-column>
+			  <el-table-column label="计划生产数" align="center" prop="pNum"  width="120">
+			    <template slot-scope="scope">
+			      <el-form-item
+			          label-width="0px"
+			         :prop="'tableData.'+ scope.$index + '.pNum'"
+			         :rules="{
+			           required: true,
+			           message: '请输入计划生产数',
+			           trigger: 'blur'
+			         }"
+			       >
+			         <el-input
+			            v-model.number="scope.row.pNum"
+			            size="small"
+			            oninput="value=value.replace(/[^\d]/g,'')"
+			            style="width: 100%"
+			            placeholder="输入数量"
+			          ></el-input>
+			      </el-form-item>
+			    </template>
+			  </el-table-column>
+			  <el-table-column label="要求成型数量" align="center" prop="mNum"  width="120">
+			    <template slot-scope="scope">
+			      <el-form-item
+			          label-width="0px"
+			         :prop="'tableData.'+ scope.$index + '.mNum'"
+			         :rules="{
+			           required: true,
+			           message: '请输入要求成型数量',
+			           trigger: 'blur'
+			         }"
+			       >
+			         <el-input
+			            v-model.number="scope.row.mNum"
+			            size="small"
+			            oninput="value=value.replace(/[^\d]/g,'')"
+			            style="width: 100%"
+			            placeholder="输入数量"
+			          ></el-input>
+			      </el-form-item>
+			    </template>
+			  </el-table-column>
+			  <el-table-column label="按单按库" align="center" prop="model">
+			  </el-table-column>
+			  <el-table-column label="订单类型" align="center" prop="model">
+			  </el-table-column>
+			  <el-table-column label="交付日期" align="center" prop="measuringUnit">
+			  </el-table-column>
+			  <el-table-column label="要求成型日期" align="center" prop="date"  width="150">
+				  <template slot-scope="scope">
+				    <el-form-item
+				        label-width="0px"
+				       :prop="'tableData.'+ scope.$index + '.date'"
+				       :rules="{
+				         required: true,
+				         message: '请选择要求成型日期',
+				         trigger: 'blur'
+				       }"
+				     >
+				       <el-date-picker
+				          style="width: 100%;"
+				          v-model="scope.row.date"
+				          type="date"
+				          placeholder="选择日期"
+				          value-format="yyyy-MM-dd">
+				        </el-date-picker>
+				    </el-form-item>
+				  </template>
+			  </el-table-column>
+			  <el-table-column label="客户名称" align="center" prop="measuringUnit">
+			  </el-table-column>
+			  <el-table-column label="业务员" align="center" prop="measuringUnit">
+			  </el-table-column>
+			  <el-table-column label="交付要求" align="center" prop="measuringUnit">
+			  </el-table-column>
+			  <el-table-column prop="priority" label="优先级" width="100" align="center">
+			    <template slot-scope="{ row }">
+			      <div class="sort-wrap">
+			        <i class="el-icon-caret-top" @click="sortTop(row)"></i>
+			        <i class="el-icon-caret-bottom" @click="sortBottom(row)"></i>
+			      </div>
+			    </template>
+			  </el-table-column>
+			  <el-table-column label="操作" align="center" width="70" fixed="right">
+			    <template slot-scope="scope">
+			      <el-button
+			        type="text"
+			        @click="handleDeleteItem(scope.$index)"
+			        >删除</el-button
+			      >
+			    </template>
+			  </el-table-column>
+			</el-table>
+		</el-form>
+     
+    </el-card>
+  </div>
+</template>
+<script>
+  export default {
+    components: {
+    },
+    data () {
+      return {
+         form:{
+			tableData:[
+				{name:'122',model:'型号1',sort:1},
+				{name:'222',model:'型号2',sort:2}
+			]
+        },
+         // 表单验证规则
+		rules: {
+			edition:[{required: true,message: '请选择生产版本',trigger: 'blur'}],
+			productline:[{required: true,message: '请选择产线',trigger: 'blur'}],
+		},
+      };
+    },
+    computed: {
+      // 是否开启响应式布局
+      styleResponsive() {
+        return this.$store.state.theme.styleResponsive;
+      }
+    },
+	methods: {
+       cancel(){
+		   this.$router.go(-1)
+	   },
+	   toSubmit(){
+		   
+	   },
+	   sortTop (row) {
+	     if (row.sort <= 1) {
+	       return;
+	     }
+	     let rowN = this.form.tableData.find((n) => n.sort == row.sort - 1);
+	     rowN.sort += 1;
+	     row.sort -= 1;
+	     this.form.tableData.sort((a, b) => {
+	       return a.sort - b.sort;
+	     });
+	   },
+	   sortBottom (row) {
+	     if (row.sort >= this.form.tableData.length) {
+	       return;
+	     }
+	     let rowN = this.form.tableData.find((n) => n.sort == row.sort + 1);
+	     rowN.sort -= 1;
+	     row.sort += 1;
+	     this.form.tableData.sort((a, b) => {
+	       return a.sort - b.sort;
+	     });
+	   },
+	   againSort () {
+	     this.form.tableData.forEach((n, index) => {
+	       n.sort = index + 1;
+	     });
+	   },
+    }
+  };
+</script>
+<style lang="scss" scoped>
+	.ele-body{
+		background: #fff;
+	}
+	.body-title{
+		width: 100%;
+		display: flex;
+		align-items: center;
+		justify-content: space-between;
+	}
+	.title-left{
+		font-size: 20px;
+		color: #333;
+	}
+	.formbox{
+		margin: 20px auto;
+	}
+	.row-intro{
+		border-bottom: 1px dashed #ccc;
+	}
+	.sort-wrap {
+	  i {
+	    font-size: 30px;
+	    cursor: pointer;
+	  }
+	  .el-icon-caret-top {
+	    color: red;
+	  }
+	  .el-icon-caret-bottom {
+	    color: #157a2c;
+	  }
+	}
+</style>