Explorar o código

流程模块添加

asd26269546 %!s(int64=2) %!d(string=hai) anos
pai
achega
17ea7e121d
Modificáronse 2 ficheiros con 301 adicións e 2 borrados
  1. 285 0
      src/view/index/schedule/for-outbound.vue
  2. 16 2
      src/view/index/schedule/schedule.vue

+ 285 - 0
src/view/index/schedule/for-outbound.vue

@@ -0,0 +1,285 @@
+<!-- 供应商出货确认 -->
+<template>
+	<modal v-model="modal" :footer-hide="true" width="600px">
+		<!--  表单主要内容  -->
+		<div class="content">
+			<div class="title">补出库审批</div>
+			<div class="sub-title border">
+				<span>申请信息</span>
+			</div>
+			<div class="row">
+				<div class="col">
+					<div class="label">申请部门:</div>
+					<div class="value">{{ data.purchaseBillNo }}</div>
+				</div>
+				<div class="col">
+					<div class="label">申请人:</div>
+					<div class="value">{{ data.supplierName }}</div>
+				</div>
+			</div>
+			<div class="row">
+				<div class="col">
+					<div class="label">申请时间:</div>
+					<div class="value">{{ data.materialCode }}</div>
+				</div>
+			</div>
+			<div class="sub-title border">
+				<span>补出库信息</span>
+			</div>
+			<ul>
+				<li v-for="(i,index) in listData" :key="index">
+					<div>物料编码:{{i.materialCode}}</div>
+					<div>物料名称:{{i.materialName}}</div>
+					<div>出库时间:{{i.createTime}}</div>
+					<div>数量:<span style="color: red">{{i.changeNum}}</span></div>
+					<div>补出库原因:{{i.remark}}</div>
+					<div>接收人员:{{i.realName}}</div>
+				</li>
+			</ul>
+            <div style="text-align:center">
+                <Button style="width:200px" @click="handleFlow">审批流程</Button>
+            </div>
+            
+		</div>
+	</modal>
+</template>
+  
+  <script>
+import { ApprovalBillFlow } from '@/api/applyPurchase'
+
+import { filePreview } from '@/libs/util'
+import axios from 'axios'
+export default {
+	name: 'contract-form',
+	data() {
+		return {
+			tabIndex: 0,
+			formData: {},
+			remark: '',
+			modal: false,
+			flowsList: [],
+			infoData: {},
+            listData:[],
+		}
+	},
+	components: {},
+	props: {
+		data: {
+			type: Object,
+			default() {
+				return {}
+			},
+		},
+		value: {
+			type: Boolean,
+			default: false,
+			require: true,
+		},
+	},
+	watch: {
+		value: {
+			handler(n) {
+                console.log(this.data)
+				this.modal = n
+			},
+			immediate: true,
+		},
+		modal(n) {
+			this.$emit('input', n)
+			if (n) {
+				axios
+                    .post('/cloudApi/materialReceive/flowDetails', {
+                        flowLinkId: this.data.linkId,
+                    })
+                    .then(res => {
+                        console.log(res)
+                        this.listData = res.data.data
+                    })
+			}
+		},
+	},
+	methods: {
+        handleFlow(){
+            const v = this
+            axios
+                .post('/cloudApi/materialReceive/handleFlow', {
+                    checkUserId:JSON.parse(window.localStorage.getItem('userInfo')).id,
+                    flowLinkId: this.data.linkId,
+                    checkState:2,
+                    suggestions:'',
+                })
+                .then(res => {
+                    this.$Message.info('操作成功!')
+                    this.modal = false
+                    this.$emit('getlist')
+                })
+            
+        },
+		openPic(url) {
+			filePreview(url)
+		},
+		cfm(type) {
+			ApprovalBillFlow({
+				linkCheckId: [this.data.flowChekId],
+				updateAction: type,
+				suggestions: this.remark,
+				adjustNum: this.data.adjustNum,
+			}).then((res) => {
+				if (res.code === 0) {
+					this.cancel()
+					this.$Message.info(res.msg || '操作成功!')
+					this.$emit('getlist')
+				}
+			})
+		},
+		cancel() {
+			this.remark = ''
+			this.modal = false
+		},
+	},
+}
+</script>
+  
+  <style lang="less" scoped>
+ul {
+	padding: 0 20px;
+	li {
+		list-style: none;
+		border: 1px solid #ccc;
+		overflow: hidden;
+		padding: 0 20px;
+		div {
+			width: 50%;
+			float: left;
+			line-height: 34px;
+		}
+	}
+}
+.content {
+	padding: 10px 0;
+	border-radius: 5px;
+	background-color: #ffffff;
+	&.sub-content {
+		background-color: #f2f2f2;
+		margin-top: 3px;
+		.title {
+			padding-top: 0;
+		}
+	}
+	.title {
+		text-align: center;
+		font-size: 20px;
+		font-weight: bold;
+	}
+	.sub-title {
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		margin: 10px;
+		font-size: 14px;
+		font-weight: bold;
+		&.border {
+			border-bottom: 1px solid #000000;
+		}
+		.go {
+			font-size: 10px;
+			font-weight: normal;
+			color: #0000ff;
+		}
+		.tabs {
+			margin-bottom: 1px;
+			display: flex;
+			justify-content: space-between;
+			border: 1px solid #5d6c7b;
+			border-radius: 2px;
+			font-size: 12px;
+			font-weight: normal;
+			.tab {
+				width: 50px;
+				text-align: center;
+				border-right: 1px solid #5d6c7b;
+				cursor: pointer;
+				&:last-child {
+					border-right: none;
+				}
+				&.active {
+					background-color: rgba(22, 155, 213, 1);
+					color: #ffffff;
+				}
+			}
+		}
+	}
+	.row-wrap {
+		position: relative;
+		.pic {
+			position: absolute;
+			right: 20px;
+			top: 50%;
+			transform: translateY(-50%);
+			width: 50px;
+			img {
+				width: 100%;
+			}
+		}
+	}
+	.row {
+		padding: 0 20px;
+		margin-bottom: 5px;
+		display: flex;
+		justify-content: space-between;
+		align-items: center;
+		.col {
+			flex: 1;
+			display: flex;
+			align-items: flex-start;
+			.value {
+				flex: 1;
+			}
+		}
+	}
+	.card {
+		margin-bottom: 5px;
+		background-color: #ffffff;
+		border: 1px solid rgba(215, 215, 215, 1);
+		border-radius: 5px;
+		.border {
+			border-bottom: 1px solid #5d6c7b;
+		}
+		.line {
+			width: 100%;
+			border-bottom: 1px solid #5d6c7b;
+		}
+	}
+	.table {
+		padding: 0 20px;
+		padding-bottom: 20px;
+		table {
+			border-collapse: collapse;
+			border: none;
+			width: 100%;
+			tr {
+				td,
+				th {
+					padding: 5px;
+					text-align: center;
+					border: solid #dcdee2 1px;
+					position: relative;
+					font-size: 12px;
+				}
+				th {
+					background-color: #eeeeee;
+				}
+			}
+		}
+	}
+}
+/deep/ .ivu-modal-body {
+	padding: 0;
+	max-height: 80vh;
+	overflow: auto;
+}
+/deep/ .ivu-modal-content {
+	background-color: transparent;
+}
+</style>
+  

+ 16 - 2
src/view/index/schedule/schedule.vue

@@ -98,6 +98,12 @@
       :data="formData"
       @getlist="getList"
     />
+    <forOutbound
+      v-model="forOutboundShow"
+      :data="formData"
+      @getlist="getList"
+    />
+    
     <!-- 批量审批 -->
     <modal
       v-model="dispatchShow"
@@ -164,6 +170,8 @@ import ProviderContractOverForm from './provider-contract-over-form'
 import ProviderTagDelForm from './provider-tag-del-form'
 import ProviderShipmentForm from './provider-shipment-form'
 import profitTagForm from './profit-tag-form'
+import forOutbound from './for-outbound'
+
 import { exportExcel } from '@/libs/util'
 export default {
   name: 'schedule',
@@ -186,7 +194,8 @@ export default {
     ProviderContractOverForm,
     ProviderTagDelForm,
     ProviderShipmentForm,
-    profitTagForm
+    profitTagForm,
+    forOutbound
   },
   data () {
     return {
@@ -212,6 +221,7 @@ export default {
       contractShow: false,
       payShow: false,
       profitTagFormShow: false,
+      forOutboundShow:false,
       data: [],
       columns: [
         {
@@ -243,6 +253,7 @@ export default {
                   click (e) {
                     e.stopPropagation()
                     _this.formData = {}
+                    console.log(params.row.dealWithType)
                     if (params.row.dealWithType === 0) {
                       // 请购单审批
                       GetApplyPurchasePageList({
@@ -380,6 +391,9 @@ export default {
                       // 盘点标签处置
                       _this.formData = { ...params.row }
                       _this.profitTagFormShow = true
+                    } else if(params.row.dealWithType === 14){
+                      _this.formData = { ...params.row }
+                      _this.forOutboundShow = true
                     }
                   }
                 }
@@ -546,7 +560,7 @@ export default {
           this.params.total = res.result.totalCount
         }
       })
-    }
+    },
   },
   mounted () {
     this.getList()