From bbc0f06f17c9c3c9ed325af581dfdfc9b9dcaa82 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期一, 18 三月 2024 15:16:03 +0800
Subject: [PATCH] 完成检验下单模板功能

---
 src/components/do/b1-ins-order/add.vue        |  110 ++++++++++++------
 src/components/view/b1-report-preparation.vue |  221 ++++++++++++++++++++++++++++++++++++
 static/js/menu.js                             |    2 
 src/assets/api/controller.js                  |    4 
 4 files changed, 299 insertions(+), 38 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 7d1ec86..4871473 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -120,6 +120,10 @@
 	upInsOrder: "/insOrder/upInsOrder", //妫�楠屼笅鍙�
   getInsOrder: "/insOrder/getInsOrder", //鏌ヨ妫�楠屼笅鍗曞唴瀹硅鎯�
   upInsOrderOfState: "/insOrder/upInsOrderOfState", //瀹℃牳妫�楠屽崟鏈鸿繘琛岀姸鎬佷慨鏀�
+  addInsOrderTemplate: "/insOrder/addInsOrderTemplate", //娣诲姞妫�楠屽崟妯℃澘
+  selectInsOrderTemplate: "/insOrder/selectInsOrderTemplate", //鏌ヨ妫�楠屽崟妯℃澘
+  selectInsOrderTemplateById: "/insOrder/selectInsOrderTemplateById", //閫氳繃妫�楠屽崟妯℃澘id鑾峰彇妫�楠屽崟妯℃澘鍐呭
+  delInsOrderTemplate: "/insOrder/delInsOrderTemplate", //鍒犻櫎妫�楠屽崟妯℃澘
 }
 
 const sampleOrder = {
diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue
index 23d27c7..063abfc 100644
--- a/src/components/do/b1-ins-order/add.vue
+++ b/src/components/do/b1-ins-order/add.vue
@@ -88,10 +88,10 @@
 			<el-row class="title">
 				<el-col :span="6" style="padding-left: 20px;">濮旀墭鍗曚俊鎭�</el-col>
 				<el-col :span="18" style="text-align: right;">
-					<el-select v-model="template" size="medium" placeholder="涓嬪崟妯℃澘" style="margin-right: 10px;" v-show="active==1">
-						<el-option v-for="(a, ai) in templates" :key="ai" :value="a.value" :label="a.label">
-              <span style="float: left">{{ a.label }}</span>
-              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete"></i>
+					<el-select v-model="template" size="medium" placeholder="涓嬪崟妯℃澘" style="margin-right: 10px;" v-show="active==1" @change="selectInsOrderTemplateById">
+						<el-option v-for="(a, ai) in templates" :key="ai" :value="a.id" :label="a.name">
+              <span style="float: left">{{ a.name }}</span>
+              <i class="el-icon-delete" style="float: right; color: #66b1ff; font-size: 16px" @click.stop="handleDelete(a)"></i>
             </el-option>
 					</el-select>
 					<el-button size="medium" @click="templateDia=true" v-show="active==1">
@@ -383,12 +383,7 @@
 		data() {
 			return {
 				template: null,
-				templates: [
-          {
-            label:'0000',
-            value:1
-          }
-        ],
+				templates: [],
 				addObj: {
 					entrustCode: null,
 					custom: null,
@@ -462,6 +457,7 @@
 			this.selectEnumByCategoryForType()
 			this.getUserNow()
 			this.selectStandardTreeList()
+      this.selectInsOrderTemplate()
       if(this.active==1){
         // 涓嬪崟娴佺▼
       }else {
@@ -503,20 +499,30 @@
 				this.selectUserDia = false
 			},
 			save() {
-				this.saveLoad = true
-				this.$axios.post(this.$api.insOrder.addInsOrder,{
-					insOrder: this.addObj,
-					list: this.sampleList
-				},{
-					headers: {
-						'Content-Type': 'application/json'
-					}
-				}).then(res=>{
-					this.saveLoad = false
-					if(res.code==201)return
-					this.$message.success('宸叉彁浜�')
-					this.$parent.playOrder(0)
-				})
+        if(!this.addObj.custom){
+          this.$message.error('鏈�夋嫨涓嬪崟瀹㈡埛')
+        }else if(!this.addObj.type){
+          this.$message.error('鏈�夋嫨绱ф�ョ▼搴�')
+        }else if(this.sampleList.length<1){
+          this.$message.error('璇锋坊鍔犱竴涓牱鍝�')
+        }else if(!this.sampleList.every(m=>m.sampleCode)){
+          this.$message.error('杈撳叆鏍峰搧缂栧彿')
+        }else{
+          this.saveLoad = true
+          this.$axios.post(this.$api.insOrder.addInsOrder,{
+            insOrder: this.addObj,
+            list: this.sampleList
+          },{
+            headers: {
+              'Content-Type': 'application/json'
+            }
+          }).then(res=>{
+            this.saveLoad = false
+            if(res.code==201)return
+            this.$message.success('宸叉彁浜�')
+            this.$parent.playOrder(0)
+          })
+        }
 			},
       upInsOrderOfState(state){
         this.saveLoad = true
@@ -692,34 +698,64 @@
 				}
 				return '';
 			},
+      selectInsOrderTemplate(){
+        this.$axios.get(this.$api.insOrder.selectInsOrderTemplate).then(res=>{
+					if(res.code==201)return
+					this.templates = res.data
+				})
+      },
       // 鍒犻櫎妯℃澘--璋冪敤鎺ュ彛
-      handleDelete(){
+      handleDelete(row){
         this.$confirm('鏄惁鍒犻櫎褰撳墠鏁版嵁?', "璀﹀憡", {
 							confirmButtonText: "纭畾",
 							cancelButtonText: "鍙栨秷",
 							type: "warning"
 						}).then(() => {
-							// this.$axios.post(this.delUrl, {
-							// 	id: row.id
-							// }).then(res => {
-							// 	if (res.code === 201) {
-							// 		return
-							// 	}
-							// 	this.$message.success('鍒犻櫎鎴愬姛')
-							// 	this.selectList()
-							// }).catch(e => {
-							// 	this.$message.error('鍒犻櫎澶辫触')
-							// })
+							this.$axios.post(this.$api.insOrder.delInsOrderTemplate, {
+								id: row.id
+							}).then(res => {
+								if (res.code === 201) {
+									return
+								}
+								this.$message.success('鍒犻櫎鎴愬姛')
+								this.selectInsOrderTemplate()
+							}).catch(e => {
+								this.$message.error('鍒犻櫎澶辫触')
+							})
 						}).catch(() => {})
       },
       // 淇濆瓨妯℃澘
       addTemplateDia(){
         if(this.templateName){
           this.templateLoading = true;
+          this.$axios.post(this.$api.insOrder.addInsOrderTemplate,{
+            name:this.templateName,
+            thing:JSON.stringify({addObj:this.addObj,sampleList:this.sampleList})
+          },{
+					headers: {
+						'Content-Type': 'application/json'
+					}
+				}).then(res=>{
+					if(res.code==201)return
+          this.templateLoading = false;
+          this.templateDia = false;
+          this.$message.success('淇濆瓨鎴愬姛')
+          this.selectInsOrderTemplate()
+          this.templateName = ''
+				})
         }else{
           this.$message.error('璇峰~鍐欐ā鏉垮悕绉�')
         }
-      }
+      },
+      // 鏌ヨ妯℃澘
+      selectInsOrderTemplateById(e){
+        this.$axios.post(this.$api.insOrder.selectInsOrderTemplateById+'?id='+e).then(res=>{
+					if(res.code==201)return
+          let obj = JSON.parse(res.data)
+          this.addObj = obj.addObj;
+          this.sampleList = obj.sampleList;
+				})
+      },
 		}
 	}
 </script>
diff --git a/src/components/view/b1-report-preparation.vue b/src/components/view/b1-report-preparation.vue
new file mode 100644
index 0000000..b38230a
--- /dev/null
+++ b/src/components/view/b1-report-preparation.vue
@@ -0,0 +1,221 @@
+<style scoped>
+	.title {
+		height: 60px;
+		line-height: 60px;
+	}
+
+	.search {
+		background-color: #fff;
+		height: 80px;
+		display: flex;
+		align-items: center;
+	}
+
+	.search_thing {
+		display: flex;
+		align-items: center;
+		height: 50px;
+	}
+
+	.search_label {
+		width: 120px;
+		font-size: 14px;
+		text-align: right;
+	}
+
+	.search_input {
+		width: calc(100% - 120px);
+	}
+
+	.table {
+		margin-top: 10px;
+		background-color: #fff;
+		width: calc(100% - 40px);
+		height: calc(100% - 60px - 80px - 10px - 40px);
+		padding: 20px;
+	}
+
+	.el-form-item {
+		margin-bottom: 16px;
+	}
+</style>
+
+<template>
+	<div class="inspection_order">
+		<div style="width: 100%;height: 100%;">
+			<div>
+				<el-row class="title">
+					<el-col :span="12" style="padding-left: 20px;">鎶ュ憡缂栧埗</el-col>
+				</el-row>
+			</div>
+			<div class="search">
+				<div class="search_thing">
+					<div class="search_label">鏍峰搧鍚嶇О锛�</div>
+					<div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
+							v-model="componentData.entity.sample" @keyup.enter.native="refreshTable()"></el-input></div>
+				</div>
+				<div class="search_thing">
+					<div class="search_label">鐘舵�侊細</div>
+					<div class="search_input">
+          <el-select v-model="componentData.entity.status" placeholder="鍏ㄩ儴">
+            <el-option
+              v-for="item in statusList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+          </div>
+				</div>
+				<div class="search_thing" style="padding-left: 30px;">
+					<el-button size="small" @click="refresh()">閲� 缃�</el-button>
+					<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+				</div>
+			</div>
+			<div class="table">
+				<ValueTable ref="ValueTable" :url="$api.insOrder.selectInsOrderParameter" :componentData="componentData"
+					:key="upIndex" @handleWeave="handleWeave"/>
+			</div>
+		</div>
+	</div>
+</template>
+
+<script>
+	import ValueTable from '../tool/value-table.vue'
+	export default {
+		components: {
+			ValueTable
+		},
+		data() {
+			return {
+				componentData: {
+					entity: {
+						entrustCode: null,
+						sample: null,
+						state: 1,
+						orderBy: {
+							field: 'id',
+							order: 'asc'
+						}
+					},
+					isIndex: true,
+					showSelect: false,
+					select: false,
+					do: [{
+						id: 'handleWeave',
+						font: '鍦ㄧ嚎缂栧埗',
+						type: 'text',
+						method: 'handleWeave',
+						disabFun: (row, index) => {
+							return row.state != 1
+						}
+					}, {
+						id: 'download',
+						font: '涓嬭浇',
+						type: 'text',
+						method: 'download',
+						disabFun: (row, index) => {
+							return row.state != 1
+						}
+					}, {
+						id: 'handleUpload',
+						font: '涓婁紶',
+						type: 'text',
+						method: 'handleUpload',
+						disabFun: (row, index) => {
+							return row.state != 0
+						}
+					}, {
+						id: 'handlRestore',
+						font: '杩樺師',
+						type: 'text',
+						method: 'handleRestore'
+					}, {
+            id: 'handleIssued',
+						font: '瀹℃牳',
+						type: 'text',
+						method: 'handleIssued',
+						disabFun: (row, index) => {
+							return row.state != 1 || row.sendTime != null
+						}
+					}, {
+            id: 'handleApprove',
+						font: '鎵瑰噯',
+						type: 'text',
+						method: 'handleApprove',
+						disabFun: (row, index) => {
+							return row.state != 1 || row.sendTime != null
+						}
+					}],
+					linkEvent:{
+					  entrustCode:{
+					    method:'selectAllByOne'
+					  }
+					},
+					tagField: {
+						type: {
+							select: [{
+								value: 0,
+								type: 'success',
+								label: '鏅��'
+							}, {
+								value: 1,
+								type: 'warning',
+								label: '浼樺厛'
+							}, {
+								value: 2,
+								type: 'danger',
+								label: '绱ф��'
+							}]
+						},
+						createUser: {
+							select: []
+						}
+					},
+					selectField: {},
+					requiredAdd: [],
+					requiredUp: []
+				},
+				entityCopy: {},
+				upIndex: 0,
+        statusList:[]
+			}
+		},
+		mounted() {
+			this.entityCopy = this.HaveJson(this.componentData.entity)
+			this.getPower()
+		},
+		methods: {
+			refreshTable() {
+				this.$refs['ValueTable'].selectList()
+			},
+			refresh() {
+				this.componentData.entity = this.HaveJson(this.entityCopy)
+				this.upIndex++
+			},
+      handleWeave(){},
+			// 鏉冮檺鍒嗛厤
+			getPower(radio) {
+				let power = JSON.parse(sessionStorage.getItem('power'))
+				let up = false
+				let del = false
+				let add = false
+				for (var i = 0; i < power.length; i++) {
+					if (power[i].menuMethod == 'upInsOrder') {
+						up = true
+					}
+					if (power[i].menuMethod == 'addInsOrder') {
+						add = true
+					}
+				}
+				if (!up) {
+					this.componentData.do.splice(4, 1)
+				}
+			},
+			handleClose() {
+
+				this.upLoad = false;
+			},
+		}
+	}
+</script>
diff --git a/static/js/menu.js b/static/js/menu.js
index d24b3a4..6e89662 100644
--- a/static/js/menu.js
+++ b/static/js/menu.js
@@ -27,7 +27,7 @@
 		}, {
 			v: "鎶ュ憡缂栧埗",
 			i: "font icon-erjidaohang",
-			u: "",
+			u: "b1-report-preparation",
 			p: ""
 		}, {
 			v: "璐圭敤缁熻",

--
Gitblit v1.9.3