Преглед на файлове

填报抽样单和主体信息样式

jiangyu преди 3 години
родител
ревизия
01153b3238

+ 32 - 9
src/components/admin.vue

@@ -125,6 +125,29 @@
 				//       path: '/admin/'
 				//     }]
 				//   },
+				{
+					// icon: 'el-icon-user-solid',
+					subMenuName: '主体管理',
+					children: [{
+							id: '6-1',
+							subMenuName: '监管机构',
+							path: '/admin/regulatoryAuthority'
+						}, {
+							id: '6-2',
+							subMenuName: '监测机构',
+							path: '/admin/testingFacility'
+						}
+						// ,{
+						//      id: '5-3',
+						//      subMenuName: '监测抽查',
+						//      path: '/admin/checkMonitor'
+						//    },{
+						//      id: '5-4',
+						//      subMenuName: '复检任务',
+						//      path: '/admin/'
+						//    },
+					]
+				},
 				{
 					// icon: 'el-icon-user-solid',
 					subMenuName: '监测任务',
@@ -136,7 +159,7 @@
 							id: '5-2',
 							subMenuName: '专项监测',
 							path: '/admin/specialMonitor'
-						}
+						},
 						// ,{
 						//      id: '5-3',
 						//      subMenuName: '监测抽查',
@@ -265,16 +288,16 @@
 		padding-top: 8px !important;
 	}
 
-	.el-menu-item.is-active {
-		// background-color: #3ace04 !important;
-	}
+	// .el-menu-item.is-active {
+	// 	// background-color: #3ace04 !important;
+	// }
 
 
-	.admin-logo-container {
-		// border-color: #5EB9DE;
-		// border-right-width: 1px;
-		// border-right-style: solid;
-	}
+	// .admin-logo-container {
+	// 	// border-color: #5EB9DE;
+	// 	// border-right-width: 1px;
+	// 	// border-right-style: solid;
+	// }
 
 	.admin-logo {
 		margin-left: 5px;

+ 579 - 0
src/components/admin/regulatoryAuthority.vue

@@ -0,0 +1,579 @@
+<template>
+	<div style="width: 100%">
+		<el-card class="box-card">
+			<div slot="header" class="clearfix">
+		<el-breadcrumb separator-class="el-icon-arrow-right">
+			
+		  <el-breadcrumb-item >首页</el-breadcrumb-item>
+		  <el-breadcrumb-item>主体管理</el-breadcrumb-item>
+		  <el-breadcrumb-item>监管机构</el-breadcrumb-item>
+		</el-breadcrumb>
+		</div>
+		
+		<!-- 头部搜索栏 -->
+		<el-row :gutter="60" style="margin-right: 0px;">
+			<el-form style="display: flex; flex-direction: row;">
+					<el-form-item label="所属行业" class="select">
+						<el-date-picker v-model="queryInfo.year" style="width: 110px;" value-format="yyyy" type="year"
+							clearable />
+					</el-form-item>
+					<el-form-item label="机构级别" class="select">
+						<el-select v-model="queryInfo.ispublic" style="width: 110px;" clearable>
+							<el-option v-for="item in taskispublic" :key="item.value" :label="item.label"
+								:value="item.value" >
+							</el-option>
+						</el-select>
+					</el-form-item>
+					<el-form-item label="所属区域" class="select">
+						<el-date-picker v-model="queryInfo.starttime" style="width: 180px;" align="right" type="date"
+							:picker-options="pickerOptions" clearable value-format="yyyy-MM-dd" />
+					</el-form-item>
+					<el-form-item label="--" class="select" style="margin-left: 10px;">
+						<el-date-picker v-model="queryInfo.endtime" style="width: 180px;" align="right" type="date"
+							:picker-options="pickerOptions"  clearable />
+					</el-form-item>
+					<el-form-item label="机构名称" class="select">
+						<el-input v-model="queryInfo.task_name" placeholder="请输入机构名称"></el-input>
+					</el-form-item>
+					<el-form-item label="机构负责人" class="select">
+						<el-input v-model="queryInfo.task_name" placeholder="请输入机构负责人"></el-input>
+					</el-form-item>
+					<!-- 查询 -->
+					<el-button style="height: 40px;margin-left: 10px;" type="success" @click="searchData()">查询</el-button>
+					<!-- 重置 -->
+					<el-button style="height: 40px;margin-left: 5px;" type="success" @click="reset()">重置</el-button>
+			</el-form>
+		</el-row>
+		<!--  头部钮区域-->
+		<el-row :gutter="90" style="margin-right: 0px;">
+			<div style="display: flex;flex-direction: row;float: right;">
+				<el-button type="primary" size="small" plain icon="el-icon-plus" @click="add()">新增</el-button>
+				<el-button type="primary" size="small" plain icon="el-icon-edit-outline" @click="ispublic()">发布
+				</el-button>
+				<el-button type="primary" size="small" plain icon="el-icon-scissors" @click="repeal()">废止</el-button>
+				<el-button type="primary" size="small" plain icon="el-icon-delete" @click="delArray()">删除</el-button>
+				<el-button type="primary" size="small" plain icon="el-icon-download">导出</el-button>
+			</div>
+		</el-row>
+		<!--  表格数据区域-->
+		<el-table ref="multipleTable" :data="tableData" border stripe highlight-current-row style="width: 100%"
+			:row-style="rowStyle" :cell-style="cellStyle" @selection-change="handleSelectionChange">
+			<el-table-column type="selection" width="50"></el-table-column>
+			<el-table-column label="序号" width="50px">
+				<template slot-scope="scope">
+					{{ scope.$index+1 }}
+				</template>
+			</el-table-column>
+			<el-table-column :key="" v-for="table in tableHeader" :label="table.label" :prop="table.prop" align="center"
+				:width="table.width" :fixed="table.fixed" />
+			<el-table-column label="操作" align="center" fixed="right">
+				<!-- 操作按钮区域的作用域插槽 -->
+				<template slot-scope="scope">
+					<el-col style="margin-bottom: 5px;">
+						<el-button type="success" size="mini" @click="readDialogVisible1(scope.row)">详情</el-button>
+						<el-button type="success" size="mini" plain>牵头单位报告</el-button>
+					</el-col>
+					<el-col>
+						<el-button type="success" size="mini" plain @click="TaskSample()">抽样单</el-button>
+						<el-button type="success" size="mini" plain>承担单位报告</el-button>
+					</el-col>
+				</template>
+			</el-table-column>
+		</el-table>
+		
+		<!--    分页器区域-->
+		<el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange"
+			:current-page="queryInfo.pageNum" :page-sizes="[10, 15, 20]" :page-size="queryInfo.pageSize"
+			layout="total, sizes, prev, pager, next, jumper" :total="total" background />
+			</el-card>
+		<!-- 任务详情对话框-->
+		<el-dialog title="查看" :visible.sync="readDialogVisible" width="30%" :close-on-click-modal="false"
+			class="dialogItem">
+			<el-form v-if="readDialogVisible" :model="taskSampleForm" label-width="100px">
+				<el-form-item label="任务名称:" prop="task_name" class="labelItem">
+					<div>{{readForm.task_name}}</div>
+				</el-form-item>
+				<el-form-item label="任务优先级:" prop="level" class="labelItem">
+					<div v-if="readForm.level=='0'">一般</div>
+					<div v-if="readForm.level=='1'">紧急</div>
+					<div v-if="readForm.level=='2'">特急</div>
+				</el-form-item>
+				<el-form-item label="监测类型:" prop="task_class" width="70px" class="labelItem">
+					<div>{{readForm.task_class}}</div>
+				</el-form-item>
+				<el-form-item label="年度:" prop="year" class="labelItem">
+					<div>{{readForm.year}}</div>
+				</el-form-item>
+
+				<el-form-item label="批次:" prop="batch" width="200px" class="labelItem">
+					<div>{{readForm.batch}}</div>
+				</el-form-item>
+				<el-form-item label="任务时间:" prop="starttime" width="200px" class="labelItem">
+					<div>{{readForm.starttime}} 至 {{readForm.endtime}}</div>
+				</el-form-item>
+				<el-form-item label="发布单位:" prop="releaser" class="labelItem">
+					<div>{{readForm.releaser}}</div>
+				</el-form-item>
+				<el-form-item label="牵头单位:" prop="main_unit" class="labelItem">
+					<div>{{readForm.main_unit}}</div>
+				</el-form-item>
+				<el-form-item label="附件:" prop="file_url" class="labelItem">
+					<div>{{readForm.file_url}}</div>
+				</el-form-item>
+				<el-form-item label="文件号:" prop="filenum" width="200px" class="labelItem">
+					<div v-if="readForm.filenum==null">无</div>
+					<div v-else>{{readForm.filenum}}</div>
+				</el-form-item>
+				<el-form-item label="备注:" prop="log" class="labelItem">
+					<div v-if="readForm.log==null">无</div>
+					<div v-else>{{readForm.log}}</div>
+				</el-form-item>
+				<div class="footer">
+					<el-button type="success" @click="readDialogVisible = false">返回</el-button>
+				</div>
+			</el-form>
+
+		</el-dialog>
+	</div>
+
+</template>
+
+<script>
+	const token = window.sessionStorage.getItem('token')
+	const rybh = window.sessionStorage.getItem('rybh')
+	export default {
+		name: 'recheckMonitor',
+		data() {
+			return {
+				queryInfo:{
+					year:'',
+					task_name:'',
+					starttime:'',
+					endtime:'',
+					ispublic:'',
+					pageSize:10,
+					pageNum:1
+				},
+				total:0,
+				cellStyle: {
+					padding: 2 + 'px'
+				},
+				rowStyle: {
+					height: 35 + 'px'
+				},
+				tableHeader: [{
+						label: '任务名称',
+						prop: 'task_name',
+						width: 150
+						// fixed: 'left'
+					},
+					{
+						label: '年度',
+						prop: 'year',
+						width: 80
+						// fixed: 'left'
+					}, {
+						label: '文件号',
+						prop: 'filenum',
+						width: 150
+						// fixed: 'left'
+					},
+					{
+						label: '开始时间',
+						prop: 'starttime',
+						width: 120
+					},
+					{
+						label: '结束时间',
+						prop: 'endtime',
+						width: 120
+					},
+					{
+						label: '创建者',
+						prop: 'releaser',
+						width: 120
+					},
+					{
+						label: '创建时间',
+						prop: 'createtime',
+						width: 180
+					}, {
+						label: '任务状态',
+						prop: 'ispublic',
+						width: 120
+					},
+					{
+						label: '任务优先级',
+						prop: 'level',
+						width: 120
+					},
+				],
+				// 数据表格数据
+				tableData: [],
+				// 批量删除选中数据
+				multipleSelection: [],
+				// 任务状态选项
+				taskispublic: [{
+					value: '',
+					label: '全部'
+				}, {
+					value: '0',
+					label: '未发布'
+				}, {
+					value: '1',
+					label: '已发布'
+				}, {
+					value: '2',
+					label: '废止'
+				}, {
+					value: '5',
+					label: '执行中'
+				}, {
+					value: '3',
+					label: '已结束,未完成'
+				}, {
+					value: '4',
+					label: '已结束,已完成'
+				}],
+				// 日期选择器快捷选项
+				pickerOptions: {
+					// disabledDate(time) {
+					// 	return time.getTime() > Date.now();
+					// },
+					shortcuts: [{
+						text: '今天',
+						onClick(picker) {
+							picker.$emit('pick', new Date());
+						}
+					}, {
+						text: '昨天',
+						onClick(picker) {
+							const date = new Date();
+							date.setTime(date.getTime() - 3600 * 1000 * 24);
+							picker.$emit('pick', date);
+						}
+					}, {
+						text: '一周前',
+						onClick(picker) {
+							const date = new Date();
+							date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+							picker.$emit('pick', date);
+						}
+					}]
+				},
+				// 查看任务详情
+				readDialogVisible: false,
+				readForm: {},
+				multipleSelection: [],
+				delarr: [],
+				pubarr: []
+			}
+		},
+		created() {
+			this.gettaskList()
+		},
+		methods: {
+			add() {
+				this.$router.push('addTask')
+			},
+			// 搜索
+			async searchData() {
+				this.queryInfo.pageNum = 1
+				this.gettaskList()
+			},
+			// 重置
+			reset(){
+				this.queryInfo={
+					year:'',
+					task_name:'',
+					starttime:'',
+					endtime:'',
+					ispublic:'',
+					pageSize:10,
+					pageNum:1
+				}
+			},
+			/** 监听页码的改变 */
+			handleCurrentChange(newPage) {
+				this.queryInfo.pageNum = newPage
+				this.gettaskList()
+			},
+			/** 监听每页显示多少数据的改变 */
+			handleSizeChange(newSize) {
+				this.queryInfo.pageSize = newSize
+				this.gettaskList()
+			},
+			
+			/** 监听页码的改变 */
+			handleCurrentChange(newPage) {
+				this.queryInfo.pageNum = newPage
+				this.gettaskList()
+			},
+			// 获取任务列表
+			async gettaskList() {
+				for (var key in this.queryInfo) {
+					if (this.queryInfo[key] == '') {
+						delete this.queryInfo[key]
+					}
+				}
+				const {
+					data: res
+				} = await this.$http.post(
+					"getTaskList", this.queryInfo
+				);
+
+				for (let i = 0; i < res.data.rows.length; i++) {
+					if (res.data.rows[i].ispublic == '0') {
+						res.data.rows[i].ispublic = '未发布'
+					} else if (res.data.rows[i].ispublic == '1') {
+						res.data.rows[i].ispublic = '已发布'
+					} else if (res.data.rows[i].ispublic == '2') {
+						res.data.rows[i].ispublic = '废止'
+					} else if (res.data.rows[i].ispublic == '3') {
+						res.data.rows[i].ispublic = '已结束未完成'
+					}  else if (res.data.rows[i].ispublic == '5') {
+						res.data.rows[i].ispublic = '执行中'
+					} 
+					else {
+						res.data.rows[i].ispublic = '已结束已完成'
+					}
+					if (res.data.rows[i].level == '0') {
+						res.data.rows[i].level = '一般'
+					} else if (res.data.rows[i].level == '1') {
+						res.data.rows[i].level = '紧急'
+					} else if (res.data.rows[i].level == '2') {
+						res.data.rows[i].level = '特急'
+					}
+				}
+				this.tableData = res.data.rows
+				this.total = res.data.total
+			},
+			// 查看任务详情
+			async readDialogVisible1(row) {
+				this.readForm.batch = row.batch
+				this.readForm.task_name = row.task_name
+				this.readForm.task_class = row.task_class
+				this.readForm.level = row.level
+				this.readForm.year = row.year
+				this.readForm.starttime = row.starttime
+				this.readForm.endtime = row.endtime
+				this.readForm.releaser = row.releaser
+				this.readForm.main_unit = row.main_unit
+				this.readForm.file_url = row.file_url
+				this.readForm.filenum = row.filenum
+				this.readForm.log = row.log
+				this.readDialogVisible = true
+
+			},
+			// 批量删除学生
+			handleSelectionChange(val) {
+				this.multipleSelection = val;
+				// console.log(this.multipleSelection)
+			},
+			// 删除任务
+			async delArray() {
+				// 判断任务是否为该创建者创建
+				for (let i = 0; i < this.multipleSelection.length; i++) {
+					if (rybh != this.multipleSelection[i].releaser) {
+						this.$alert('任务仅创建者可以删除!', {
+							confirmButtonText: '确定',
+							callback: action => {
+
+							}
+						});
+					}
+				}
+				var that = this;
+				const length = this.multipleSelection.length;
+				// var val = this.selectedData;
+				for (let i = 0; i < length; i++) {
+					// console.log(this.multipleSelection[i])
+					this.delarr.push(this.multipleSelection[i].id);
+				}
+				const result = await this.$http.post('delTask', {
+					delarr: that.delarr,
+					token: token
+				})
+				if (result.data.code == 0) {
+					this.$message({
+						type: 'success',
+						message: '删除成功!'
+					});
+					that.gettaskList()
+				} else {
+					this.$message({
+						type: 'error',
+						message: '删除失败!'
+					});
+				}
+
+				this.$refs.multipleTable.clearSelection();
+			},
+			// 发布任务
+			async ispublic() {
+				// 判断任务是否为该创建者创建
+				for (let i = 0; i < this.multipleSelection.length; i++) {
+					if (rybh != this.multipleSelection[i].releaser) {
+						this.$alert('任务仅创建者可以发布!', {
+							confirmButtonText: '确定',
+							callback: action => {
+
+							}
+						});
+					}
+				}
+				var that = this;
+				let canPub = 0
+				const length = this.multipleSelection.length;
+				// var val = this.selectedData;
+				console.log(this.multipleSelection)
+				// this.pubarr = this.multipleSelection;
+				for (let i = 0; i < length; i++) {
+					if (this.multipleSelection[i].ispublic != '未发布') {
+						this.$alert('任务不在可发布状态!', {
+							confirmButtonText: '确定',
+							callback: action => {
+
+							}
+						});
+					} else {
+						this.multipleSelection[i].ispublic = 1
+						canPub = 1
+					}
+				}
+				if(canPub==1){
+					const result = await this.$http.post('isPublicTask', {
+						pubarr: that.multipleSelection,
+						token: token
+					})
+					if (result.data.code == 0) {
+						this.$message({
+							type: 'success',
+							message: '发布成功!'
+						});
+						that.gettaskList()
+					}				
+				}
+			},
+			// 废止任务
+			async repeal() {
+				// 判断任务是否为该创建者创建
+				for (let i = 0; i < this.multipleSelection.length; i++) {
+					if (rybh != this.multipleSelection[i].releaser) {
+						this.$alert('任务仅创建者可以废止!', {
+							confirmButtonText: '确定',
+							callback: action => {}
+						});
+					}
+				}
+				var that = this;
+				let canPub = 0
+				const length = this.multipleSelection.length;
+				// var val = this.selectedData;
+				this.pubarr = this.multipleSelection;
+				for (let i = 0; i < length; i++) {
+					if (this.pubarr[i].ispublic == '已发布') {
+						this.pubarr[i].ispublic = 2
+						canPub = 1
+					} else {
+						this.$alert('任务不在可废止状态!', {
+							confirmButtonText: '确定',
+							callback: action => {
+
+							}
+						});
+					}
+					if(canPub==1){
+						const result = await this.$http.post('isPublicTask', {
+							pubarr: that.pubarr,
+							token: token
+						})
+						if (result.data.code == 0) {
+							this.$message({
+								type: 'success',
+								message: '任务已废止!'
+							});
+							that.gettaskList()
+						}
+					}
+					
+				}
+
+			}
+
+
+		},
+	}
+</script>
+
+<style lang="less" scoped>
+	.el-table {
+		align-items: center;
+		margin-top: 25px;
+	}
+
+	/deep/ .el-col {
+		padding-right: 0 !important;
+	}
+
+	/deep/ .el-radio-group label {
+		width: 180px;
+		margin-right: 10px;
+	}
+
+	.el-pagination {
+		margin-top: 25px;
+	}
+
+	// .el-cascader {
+	// 	width: 290px;
+	// }
+
+	.el-select {
+		width: 210px;
+		height: 100%;
+	}
+
+	.select {
+		display: flex;
+		flex-direction: row;
+		margin-left: 10px;
+	}
+
+	.dialogItem /deep/ .el-dialog__body {
+		padding: 15px 12px 0;
+		color: #606266;
+		font-size: 14px;
+		word-break: break-all;
+	}
+
+	.el-form-item {
+		margin-bottom: 8px;
+	}
+
+	.labelItem /deep/ .el-form-item__label {
+		// width: 80px;
+		text-align: center;
+		vertical-align: middle;
+		float: left;
+		font-size: 13px;
+		color: #606266;
+		// line-height: 40px;
+		padding: 0 2px 0 0;
+		-webkit-box-sizing: border-box;
+		box-sizing: border-box;
+	}
+
+	.el-dialog__header {
+		border-bottom: 1px solid #e5e5e5;
+	}
+
+	// .el-form-item__content{
+	// 	margin-left: 0;
+	// }
+	.footer {
+		padding: 5px 0;
+		border-top: 1px solid #e5e5e5;
+		text-align: center;
+	}
+</style>

+ 8 - 8
src/components/jc.vue

@@ -360,16 +360,16 @@ let groupname = window.sessionStorage.getItem('groupname')
     .el-main {
         padding-top: 8px !important;
     }
-	.el-menu-item.is-active {
-	// background-color: #3ace04 !important;
-	}
+	// .el-menu-item.is-active {
+	// // background-color: #3ace04 !important;
+	// }
 	 
 
-    .admin-logo-container {
-        // border-color: #5EB9DE;
-        // border-right-width: 1px;
-        // border-right-style: solid;
-    }
+  //   .admin-logo-container {
+  //       // border-color: #5EB9DE;
+  //       // border-right-width: 1px;
+  //       // border-right-style: solid;
+  //   }
 
     .admin-logo {
         margin-left: 5px;

+ 585 - 0
src/components/jc/fillSampleReport.vue

@@ -0,0 +1,585 @@
+<template>
+	<div>
+		<el-breadcrumb separator-class="el-icon-arrow-right">
+			<el-breadcrumb-item>首页</el-breadcrumb-item>
+			<!-- <el-breadcrumb-item :to="{ path: '/jc/setTaskcd'}">例行检测</el-breadcrumb-item> -->
+			<!-- <el-breadcrumb-item>承担单位</el-breadcrumb-item>
+			<el-breadcrumb-item :to="{ path: '/jc/routineMonitor' }">例行检测</el-breadcrumb-item>
+			<el-breadcrumb-item>执行任务</el-breadcrumb-item>
+			 :to="{ path: '/jc/setTaskcd' }"
+			<el-breadcrumb-item>抽样</el-breadcrumb-item> -->
+			<el-breadcrumb-item>填报抽样单</el-breadcrumb-item>
+		</el-breadcrumb>
+		<div id="sjinformation">
+			<el-steps :active="active" finish-status="success" style="width:70%; margin:auto;">
+			<!-- <el-step title="步骤 1" description="填报抽样单编号"></el-step> -->
+			<el-step title="步骤 1" description="填报受检单位信息"></el-step>
+			<el-step title="步骤 2" description="填报样品信息"></el-step>
+			<el-step title="步骤 3" description="填报抽样单信息"></el-step>
+			</el-steps>
+		</div>
+		<!-- 受检单位信息 -->
+		<div id="sjinformation" style="margin:40px auto; width:60%" v-show="active == 1">
+			<el-form>
+				<el-form-item label="单位名称:" prop="inspected_name" class="labelItem" required show-message="false" inline-message="true">
+					<el-input v-model="inspected_Unit.inspected_name" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="单位地址:" prop="inspected_address" class="labelItem" required>
+					<el-row>
+					<el-col :span="10" style="margin-right:10px;">	
+						<!-- <el-cascader placeholder="请选择地区" :options="region" v- model="selectedOptions" @change="handleChange" :props="{ expandTrigger: 'hover' }" style="width:100%">
+						</el-cascader> -->
+					</el-col>
+					<el-col :span="10">
+						<el-input v-model="inspected_Unit.address2" placeholder="请输入详细地址" style="width:100%"></el-input>
+					</el-col>
+					</el-row>
+				</el-form-item>
+				
+				<el-form-item label="联系人:" prop="contact_name" class="labelItem" required>
+					<el-input v-model="inspected_Unit.contact_name" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="联系电话:" prop="contact_phone" class="labelItem" required>
+					<el-input v-model="inspected_Unit.contact_phone" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="Email:" prop="contact_email" class="labelItem">
+					<el-input v-model="inspected_Unit.contact_email" style="width:42%"></el-input>
+				</el-form-item>
+			</el-form>
+
+			<div class="footer">
+				<el-button type="success" style="margin-bottom:30px;" size="small" @click="next1()">下一步</el-button>
+			</div>
+		</div>
+		<!-- 样品信息 -->
+		<div style="width: 90%; margin:40px auto;" v-show="active == 2">
+			<!-- 新增 -->
+			<!-- <el-row :gutter="90" style="margin-right: 0px;"> -->
+				<div style="display: flex;flex-direction: row;float: right; margin-bottom:20px;">
+					<el-button type="primary" size="small" plain icon="el-icon-plus" @click="addSampleInforDialog = true;">新增</el-button>
+				</div>
+			<!-- </el-row> -->
+				<!--  表格数据区域-->
+			<el-table ref="multipleTable" :data="tableData" border stripe highlight-current-row style="width: 100%; margin:auto;"
+				:row-style="rowStyle" :cell-style="cellStyle" @selection-change="handleSelectionChange">
+				<el-table-column type="selection" width="50"></el-table-column>
+				<el-table-column label="序号" width="50px">
+					<template slot-scope="scope">
+						{{ scope.$index+1 }}
+					</template>
+				</el-table-column>
+
+				<el-table-column :key="table.label" v-for="table in tableHeader" :label="table.label" :prop="table.prop"
+					align="center" :width="table.width" :fixed="table.fixed" />
+			</el-table>
+			<el-pagination style="margin-top:20px;" @size-change="handleSizeChange" @current-change="handleCurrentChange"
+				:current-page="queryInfo.currentPage" :page-sizes="[10, 20, 30, 40]" :page-size="queryInfo.pageSize"
+				layout="total, sizes, prev, pager, next, jumper" :total="total">
+			</el-pagination>
+
+			<div class="footer">
+				<el-button type="success" style="margin-bottom:30px;" size="small" @click="next2()">下一步</el-button>
+			</div>
+
+		</div>
+		<div id="sjinformation" style="margin:40px auto; width:60%" v-show="active == 3">
+			<el-form>
+				<el-form-item label="抽样单编号:" prop="cyd_code" class="labelItem" required>
+					<el-input v-model="cyd_code" style="width:40%"></el-input>
+				</el-form-item>
+			</el-form>
+			<el-form>
+				<el-form-item label="备注:" prop="cyd_log" class="labelItem" required>
+					<el-input v-model="sample_unit.cyd_log" style="width:40%"></el-input>
+				</el-form-item>
+			</el-form>
+			<el-form>
+				<el-form-item label="抽样单报告上传:" prop="releaser" class="labelItem" required>
+					<el-upload
+						class="upload-demo"
+						:headers="myHeaders"
+						action="http://syjcapi.aielab.net/api/v1/ossUpload"
+						:on-preview="handlePreview"
+						:on-remove="handleRemove"
+						:before-remove="beforeRemove"
+						multiple
+						:limit="3"
+						:on-exceed="handleExceed"
+						:file-list="fileList">
+						<el-button size="small" type="primary">点击上传</el-button>
+						<div slot="tip" class="el-upload__tip">只能上传jpg/png文件,且不超过500kb</div>
+					</el-upload>
+					<!-- <el-upload class="upload-demo" :file-list="fileList" drag :headers="myHeaders"
+						action="http://syjcapi.aielab.net/api/v1/ossUpload" :on-success="uploadSuccess" :limit="1">
+						<i class="el-icon-upload"></i>
+						<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+					</el-upload> -->
+				</el-form-item>
+			</el-form>
+						<div class="footer">
+				<el-button type="success" style="margin-bottom:30px;" size="small" @click="next3()">完成</el-button>
+			</div>
+		</div>
+			<!-- <div class="footer">
+				<el-button v-if="active > 1" type="success" style="margin:auto;" @click="pre">上一步</el-button>
+				<el-button v-if="active < 3" type="success" style="margin-right:20px;" @click="next">下一步</el-button>
+			</div> -->
+
+		<!-- 新增样品信息弹框 -->
+		<el-dialog title="新增样品信息" :visible.sync="addSampleInforDialog" width="50%" :close-on-click-modal="false" class="dialogItem" append-to-body>
+		<el-form id="addSample">
+				<el-form-item label="样品名称:" prop="sample_name" class="labelItem" required show-message="false">
+					<el-input v-model="product_Unit.sample_name" style="width:42%"></el-input>
+				</el-form-item>
+				<!-- <el-form-item label="样品编号:" prop="releaser" class="labelItem" required>
+					<el-input v-model="" style="width:42%"></el-input>
+				</el-form-item> -->
+				<el-form-item label="样品商标:" prop="sample_brand" class="labelItem" required>
+					<el-input v-model="product_Unit.sample_brand" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="规格型号:" prop="sample_type" class="labelItem" required>
+					<el-input v-model="product_Unit.sample_type" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="生产日期:" prop="sample_md_date" class="labelItem">
+					<el-input v-model="product_Unit.sample_md_date" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="质量等级:" prop="sample_quality_grade" class="labelItem">
+					<el-input v-model="product_Unit.sample_quality_grade" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="标称生产者名称:" prop="sample_product_name" class="labelItem">
+					<el-input v-model="product_Unit.sample_product_name" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="标称生产者联系电话:" prop="sample_product_phone" class="labelItem">
+					<el-input v-model="product_Unit.sample_product_phone" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="样品来源:" prop="sample_source" class="labelItem">
+					<el-input v-model="product_Unit.sample_source" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="抽样数量:" prop="sample_count" class="labelItem">
+					<el-input v-model="product_Unit.sample_count" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="抽样基数:" prop="sample_base" class="labelItem">
+					<el-input v-model="product_Unit.sample_base" style="width:42%"></el-input>
+				</el-form-item>
+				<el-form-item label="抽样时间:" prop="sample_ing_date" class="labelItem">
+					<el-date-picker v-model="product_Unit.sample_ing_date" style="width: 42%;" align="right" type="date"
+							:picker-options="pickerOptions" clearable />
+				</el-form-item>
+				<el-form-item label="备注:" prop="sample_log" class="labelItem">
+					<el-input v-model="product_Unit.sample_log" style="width:42%"></el-input>
+				</el-form-item>
+			</el-form>
+			<div class="footer">
+				<el-button type="success" style="margin-bottom:30px;" size="small" @click="postSample()">确定</el-button>
+			</div>
+		</el-dialog>
+</div>
+<!-- 底部按钮 -->
+		<!-- <el-form>
+				<el-form-item class="btn">
+					<el-button type="primary" @click="back()">返回任务详情</el-button>
+					<el-button @click="resetForm()">重置</el-button>
+					<el-button @click="onSubmit">保存,继续添加</el-button>
+				</el-form-item>
+			</el-form> -->
+			<!-- <el-form ref="form1" :model="form" label-width="110px"
+				style="margin-top: 20px;width: 48%;background-color: aliceblue;padding:10px 1px 1px 10px;">
+			</el-form> -->
+		<!-- </el-card> -->
+</template>
+
+<script>
+	const token = window.sessionStorage.getItem('token')
+	import {
+		provinceAndCityData,
+		regionData,
+		provinceAndCityDataPlus,
+		regionDataPlus,
+		CodeToText,
+		TextToCode
+	} from 'element-china-area-data'
+	export default {
+		name: 'inputSample',
+		data() {
+			return {
+				active: 1,
+				addSampleInforDialog: false,
+				total: 0,
+				cellStyle: {
+					padding: 2 + 'px'
+				},
+				rowStyle: {
+					height: 35 + 'px'
+				},
+				tableHeader: [{
+						label: '样品名称',
+						prop: 'sample_name'
+						// fixed: 'left'
+					},
+					// {
+					// 	label: '样品编号',
+					// 	prop: 'year'
+					// 	// fixed: 'left'
+					// }, 
+					{
+						label: '样品来源',
+						prop: 'sample_source',
+						// fixed: 'left'
+					},
+					{
+						label: '抽样数量',
+						prop: 'sample_count'
+					},
+					{
+						label: '抽样基数',
+						prop: 'sample_base'
+					},
+					{
+						label: '生产日期',
+						prop: 'sample_md_date'
+					},
+					{
+						label: '备注',
+						prop: 'sample_log'
+					}
+
+				],
+				// 数据表格数据
+				tableData: [],
+				// 批量删除选中数据
+				multipleSelection: [],
+				myHeaders: {
+					Authorization: 'bearer' + token
+				},
+				queryInfo:{
+					pageSize:10,
+					pageNum:1,
+				},
+				fileList: [],
+				form: {},
+				// 抽样单id
+				cyd_id: '',
+				cyd_code: '',//抽验单编号
+				cyd_data: {},//抽样单信息上部分
+				inspected_Unit: {},//受检单位信息
+				product_Unit: {},//样品信息
+				unit_production: {},//生产单位信息
+				unit_sample: {},//抽样单位信息
+				sample_unit: {},//填报抽样单最后一步
+				units: [],
+				production: [],
+				// 样品下拉框
+				sampleList: [],
+				task_id: '',
+				undertake_id: '',
+				// 产地
+				options: regionData,
+				selectedOptions: [],
+				// 日期选择器快捷选项
+				pickerOptions: {
+					disabledDate(time) {
+						return time.getTime() > Date.now();
+					},
+					shortcuts: [{
+						text: '今天',
+						onClick(picker) {
+							picker.$emit('pick', new Date());
+						}
+					}, {
+						text: '昨天',
+						onClick(picker) {
+							const date = new Date();
+							date.setTime(date.getTime() - 3600 * 1000 * 24);
+							picker.$emit('pick', date);
+						}
+					}, {
+						text: '一周前',
+						onClick(picker) {
+							const date = new Date();
+							date.setTime(date.getTime() - 3600 * 1000 * 24 * 7);
+							picker.$emit('pick', date);
+						}
+					}]
+				},
+			}
+		},
+		created() {
+			this.task_id = this.$route.params.task_id
+			this.task_profile_id = this.$route.params.under_id
+			console.log(this.task_id)
+			console.log(this.task_profile_id)
+			this.getCydObj()
+			
+
+			console.log(regionData)
+		},
+		methods: {
+			// // 步骤条下一步
+			// next() {
+			// 	if(this.active == 1){
+			// 		this.getSamples()
+			// 	}
+			// 	if(this.active++ >2) this.active = 1
+
+			// 	},
+			// // 步骤条上一步
+			// pre() {
+			// 		if(this.active == 3){
+			// 		this.getSamples()
+			// 	}
+			// 	if(this.active-- <2) this.active = 1
+			// 	},
+			//填报抽样单第一步页面中的下一步
+			async next1(){
+				 this.$confirm('保存后不可修改, 是否继续?', '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+					}).then(() => {
+					this.postInspectedUnit()
+					this.$message({
+						type: 'success',
+						message: '受检单位信息保存成功!'
+					});
+					this.active = 2	
+					}).catch(() => {
+					this.$message({
+						type: 'info',
+						message: '已取消保存'
+					});       
+					});
+				
+			},
+			async next2(){
+				this.$confirm('保存后不可继续添加样品信息, 是否继续?', '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+					}).then(() => {
+					this.$message({
+						type: 'success',
+						message: '样品信息保存成功!'
+					});
+					this.active = 3	
+					}).catch(() => {
+					this.$message({
+						type: 'info',
+						message: '已取消保存'
+					});  
+					});
+			},
+				async next3(){
+				this.$confirm('是否确认完成抽样单填报?', '提示', {
+					confirmButtonText: '确定',
+					cancelButtonText: '取消',
+					type: 'warning'
+					}).then(() => {
+						this.$message({
+							type: 'success',
+							message: '抽样单保存成功!'
+						});
+						this.postCydProfile()
+					}).catch(() => {
+					this.$message({
+						type: 'info',
+						message: '已取消保存'
+					});  
+					});
+			},
+			// //新增样品信息弹框
+			// async addData() {
+			// 	this.addSampleInforDialog = true;
+			// },
+			//获取抽样单id
+			async getCydObj() {
+				const res = await this.$http.post('getCydObj',{
+					task_id:this.task_id,
+					task_profile_id:this.task_profile_id
+					})
+				console.log(res)
+				this.cyd_id = res.data.data.cyd_id
+				console.log(this.cyd_id)
+			},
+			//保存受检单位信息
+			async postInspectedUnit() {
+				var that = this
+				that.inspected_Unit['cyd_id'] = that.cyd_id
+				const res = await this.$http.post('postInspectedUnit',that.inspected_Unit)
+				console.log(res)
+				// 判断业务逻辑
+				// if (result.data.code == 0) {
+				// 		this.$message({
+				// 			type: 'success',
+				// 			message: '提交成功!'
+				// 		});
+				// 	this.$router.push('jcobj')
+				// }
+			},
+			//保存样品信息
+			async postSample(){
+				var that = this
+				that.product_Unit['cyd_id'] = that.cyd_id
+				const res = await this.$http.post('postSample',that.product_Unit)
+				console.log(res.data.message)
+				console.log(res.data.code)
+				if (res.data.code !== 0) {
+					this.$message({
+						type: 'error',
+						message: res.data.message
+					});
+				} else {
+					this.addSampleInforDialog = false
+					this.getSamples()
+				}
+			
+			},
+			//保存最后一步上传报告备注
+			async postCydProfile(){
+				var that = this
+				that.sample_unit['cyd_id'] = that.cyd_id
+				const res = await this.$http.post('postCydProfile',that.sample_unit)
+				const result = await this.$http.post('postCyd',{
+					cyd_id: that.cyd_id,
+					cyd_code: that.cyd_code})
+				console.log(result)
+				console.log(res)
+				this.$router.push({
+					name: 'setTaskcd',
+					params: {
+						id: that.task_id,
+					}
+					});
+			},
+			//填报抽样单样品信息分页
+			handleSizeChange(val) {
+				this.queryInfo.pageSize = val;
+				console.log(`每页 ${val} 条`);
+			},
+			//填报抽样单样品信息分页
+			handleCurrentChange(val) {
+				this.queryInfo.pageNum = val;
+				console.log(`当前页: ${val}`);
+				this.gettaskList()
+			},
+			//获取抽样单样品信息列表
+			async getSamples(){
+				var that = this
+				that.queryInfo['cyd_id'] = that.cyd_id
+				const res = await this.$http.post('getSamples',that.queryInfo)
+				console.log(res.data.data.rows)
+				that.tableData = res.data.data.rows
+				that.total = res.data.data.total
+			},
+			// 获取样本列表
+			// 生成样品编码
+			// 获取选择产地
+			// handleChange() {
+			// 	var that = this
+			// 	var loc = "";
+			// 	// console.log(this.form.place)
+			// 	for (let i = 0; i < this.selectedOptions.length; i++) {
+			// 		loc += CodeToText[this.selectedOptions[i]];
+			// 	}
+			// 	// console.log(loc)
+			// 	that.cyd_data.place = loc
+			// 	console.log(that.cyd_data.place)
+			// },
+			// 上传成功(要确认数据)
+			// uploadSuccess(res) {
+			// 	console.log(res.data)
+			// 	this.cyd_data.file_url = res.data.fileUrl
+			// 	this.cyd_data.file_name = res.data.fileName
+			// },
+			// async onSubmit() {
+			// 	console.log(this.cyd_data.sample_name)
+			// 	var that = this
+			// 	console.log(that.cyd_data)
+			// 	that.cyd_data.task_id = that.task_id
+			// 	that.cyd_data.undertake_id = that.undertake_id
+			// 	that.form.cyd_data = that.cyd_data
+			// 	that.form.unit_test = that.unit_test
+			// 	that.form.unit_production = that.unit_production
+			// 	that.form.unit_sample = that.unit_sample
+			// 	console.log(that.form)
+			// 	const result = await this.$http.post('saveSample', this.form)
+			// 	if (result.data.code == 0) {
+			// 		// that.form.sample_id = result.data.data.id
+			// 		this.$message({
+			// 			type: 'success',
+			// 			message: '提交抽样单成功!'
+						
+			// 		});
+			// 	}
+			// },
+			// 重置表单
+			// resetForm() {
+			// 	console.log(this.form)
+			// 		this.cyd_data = '';
+			// 		this.unit_test = '';
+			// 		this.unit_production = '';
+			// 		this.unit_sample = '';
+			// 		this.selectedOptions = '';
+			// },
+			// 返回
+			// back() {
+			// 	var that = this
+			// 	console.log(that.task_id)
+			// 	this.$router.push({
+			// 		name: 'setTaskcd',
+			// 		params: {
+			// 			id: that.task_id
+			// 		}
+			// 	})
+			// }
+		},
+	}
+</script>
+
+<style lang="less" scoped>
+	.form {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-content: flex-start;
+	}
+
+	.el-descriptions {
+		width: 80%;
+		margin: auto;
+	}
+
+	/deep/ .el-descriptions__title {
+		margin: auto;
+		font-size: 1.25rem;
+		// font-weight: 31.25rem !important;
+	}
+	.btn{
+		margin-top:20px ;
+		// float: right;
+		text-align: center;
+	}
+	.dialogItem /deep/ .el-dialog__body {
+		padding: 15px 12px 0;
+		color: #606266;
+		font-size: 14px;
+		word-break: break-all;
+	}
+	/deep/ #sampleReport{
+		.el-descriptions-item__label.is-bordered-label{
+		width: 15rem;}
+	}
+	/deep/ #sjinformation{
+		.el-form-item__label{
+			width: 14%;
+		}
+	}
+	.footer {
+		margin-left: 45%;
+		margin-top: 20px;
+	}
+	/deep/ #addSample{
+		.el-form-item__label{
+			width: 17%;
+		}
+	}
+</style>

+ 2 - 2
src/components/jc/routineMonitor.vue

@@ -86,7 +86,7 @@
 				<el-table-column label="操作" align="center" fixed="right">
 					<!-- 操作按钮区域的作用域插槽 -->
 					<template slot-scope="scope">
-						<el-button type="success" size="mini" @click="runtask(scope.row.id)">执行检测</el-button>
+						<el-button type="success" size="mini" @click="runtask(scope.row.id)">执行任务</el-button>
 
 					</template>
 				</el-table-column>
@@ -274,7 +274,7 @@ const HeadersList = [{
 				const {
 					data: res
 				} = await this.$http.post(
-					"getTaskcd", this.queryInfo
+					"getCdTasks", this.queryInfo
 				);
 				console.log(res)
 				this.tableData = res.data.rows

+ 312 - 0
src/components/jc/sampleReport.vue

@@ -0,0 +1,312 @@
+<template>
+	<div>
+		<!-- 		<el-card class="box-card" style="height: 100%;">
+ -->
+		<!-- <div slot="header" class="clearfix"> -->
+		<el-breadcrumb separator-class="el-icon-arrow-right">
+			<el-breadcrumb-item>首页</el-breadcrumb-item>
+			<!-- <el-breadcrumb-item :to="{ path: '/jc/setTaskcd'}">例行检测</el-breadcrumb-item> -->
+			<!-- <el-breadcrumb-item>承担单位</el-breadcrumb-item>
+			<el-breadcrumb-item :to="{ path: '/jc/routineMonitor' }">例行检测</el-breadcrumb-item>
+			<el-breadcrumb-item>执行任务</el-breadcrumb-item>
+			 :to="{ path: '/jc/setTaskcd' }"
+			<el-breadcrumb-item>抽样</el-breadcrumb-item> -->
+			<el-breadcrumb-item>填报抽样单</el-breadcrumb-item>
+		</el-breadcrumb>
+  	<!-- <el-descriptions-item label="联系地址" :contentStyle="{'text-align': 'right'}">
+	  江苏省苏州市吴中区吴中大道 1188 号
+	</el-descriptions-item> -->
+	<div id="sampleReport">
+<el-descriptions  title="农产品质量安全抽样单" :column="2" border style="margin-top:20px" :contentStyle="{'text-align': left}">
+	<el-descriptions-item label="*抽样单编号" prop="cyd_data.sample_name" style="width:200px" class="labelItem" size="mini" required >
+		<el-input v-model="cyd_data.brand" placeholder='必填项'></el-input>
+	</el-descriptions-item>
+	<!-- <el-descriptions-item label="样品编码" prop="cyd_data.sample_id" class="labelItem" style="" size="mini">
+		<el-input v-model="cyd_data.sample_id" disabled>
+			<el-button slot="append" @click="createCode">生成</el-button>
+		</el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="商标" prop="cyd_data.brand" class="labelItem" size="mini">
+		<el-input v-model="cyd_data.brand"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="包装" prop="cyd_data.ispack" class="labelItem" style="" size="mini">
+		<el-radio v-model="cyd_data.ispack" label="有">有</el-radio>
+		<el-radio v-model="cyd_data.ispack" label="无">无</el-radio>
+	</el-descriptions-item>
+	<el-descriptions-item label="型号规格" prop="cyd_data.type" class="labelItem" size="mini">
+		<el-input v-model="cyd_data.type"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="执行标准" prop="cyd_data.standard" class="labelItem" style="" size="mini">
+		<el-input v-model="cyd_data.standard"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="*生产日期或批号" prop="cyd_data.production_date" class="labelItem" size="mini" required>
+		<el-input v-model="cyd_data.production_date"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="产地" prop="cyd_data.place" class="labelItem" style="" size="mini">
+		<el-cascader  :options="options" v-model="selectedOptions" @change="handleChange" style="width:60%"></el-cascader>
+	</el-descriptions-item>
+	<el-descriptions-item label="*产品认证情况" prop="cyd_data.certicfie" class="labelItem" size="mini" required>
+		<el-radio v-model="cyd_data.certicfie" label="无公害农产品">无公害农产品</el-radio>
+							<el-radio v-model="cyd_data.certicfie" label="绿色食品">绿色食品</el-radio>
+							<el-radio v-model="cyd_data.certicfie" label="有机食品">有机食品</el-radio>
+							<el-radio v-model="cyd_data.certicfie" label="其他">其他</el-radio>
+	</el-descriptions-item>
+	<el-descriptions-item label="证书编号" prop="cyd_data.certifie_num" class="labelItem" style="" size="mini">
+		<el-input v-model="cyd_data.certifie_num"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="*抽样数量" prop="cyd_data.sample_num" class="labelItem" size="mini" required>
+		<el-input v-model="cyd_data.sample_num" style="width:180px"></el-input>
+		<a> * 单位 </a><el-input v-model="cyd_data.sample_num_unit" clearable="true" style="width:180px"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="抽样基数" prop="cyd_data.sample_base" class="labelItem" size="mini" required>
+		<el-input v-model="cyd_data.sample_base" style="width:180px"></el-input>
+		<a> * 单位 </a><el-input v-model="cyd_data.sample_base_unit" clearable="true" style="width:180px"></el-input>
+	</el-descriptions-item>
+	<el-descriptions-item label="*抽样场所" prop="cyd_data.sample_ground" class="labelItem" size="mini" required >
+							<el-radio v-model="cyd_data.sample_ground" label="生产基地/企业">生产基地/企业</el-radio>
+							<el-radio v-model="cyd_data.sample_ground" label="屠宰场">屠宰场</el-radio>
+							<el-radio v-model="cyd_data.sample_ground" label="农贸市场">农贸市场</el-radio>
+							<el-radio v-model="cyd_data.sample_ground" label="批发市场">批发市场</el-radio>
+							<el-radio v-model="cyd_data.sample_ground" label="超市">超市</el-radio>
+							<el-radio v-model="cyd_data.sample_ground" label="其他">其他</el-radio>
+	</el-descriptions-item> -->
+	</el-descriptions>
+	<!-- 受检单位情况 -->
+	<el-descriptions :column="1" border style="" >
+		<el-descriptions-item label="被抽查单位信息" >
+			<el-descriptions  :column="1" border  size="mini" style="width:100%">
+				<el-descriptions-item label="*单位地址" prop="unit_test.address" size="mini" required>
+					<el-row>
+					<el-col :span="12" style="margin-right:10px;">	
+						<el-cascader placeholder="请选择地区" :options="region" v-model="selectedOptions" @change="handleChange" :props="{ expandTrigger: 'hover' }" style="width:100%">
+						</el-cascader>
+					</el-col>
+					<el-col :span="11">
+						<el-input v-model="unit_test.address" placeholder="请输入详细地址" style="width:100%"></el-input>
+					</el-col>
+					</el-row>
+				</el-descriptions-item>
+				<el-descriptions-item label="*联系人" prop="unit_test.user_name" size="mini" required>
+									<el-input v-model="unit_test.user_name"></el-input>
+				</el-descriptions-item>
+				<el-descriptions-item label="*联系电话" prop="unit_test.phone" size="mini" required>
+									<el-input v-model="unit_test.phone"></el-input>
+				</el-descriptions-item>
+
+				<el-descriptions-item label="Email" prop="unit_test.fax" size="mini">
+							<el-input v-model="unit_test.fax"></el-input>
+				</el-descriptions-item>
+			</el-descriptions>
+		</el-descriptions-item>
+	</el-descriptions>
+	<!-- 样品信息 -->
+		<el-descriptions :column="1" border style="">
+			<el-descriptions-item label="样品信息">
+				<el-descriptions  :column="1" border size="mini" style="width:100%">
+				<el-descriptions-item label="*单位地址" prop="unit_test.address" size="mini" required>
+					<el-row>
+					<el-col :span="12" style="margin-right:10px;">	
+						<el-cascader placeholder="请选择地区" :options="region" v-model="selectedOptions" @change="handleChange" :props="{ expandTrigger: 'hover' }" style="width:100%">
+						</el-cascader>
+					</el-col>
+					<el-col :span="11">
+						<el-input v-model="unit_test.address" placeholder="请输入详细地址" style="width:100%"></el-input>
+					</el-col>
+					</el-row>
+				</el-descriptions-item>
+			</el-descriptions>
+			</el-descriptions-item>
+		</el-descriptions>
+	
+		
+		<el-descriptions  :column="2" border>
+			<el-descriptions-item label="检测任务依据" prop="cyd_data.base" class="labelItem" style="" size="mini" required>
+								<el-input v-model="cyd_data.base"></el-input>
+			</el-descriptions-item>
+			<el-descriptions-item  label="抽样时间" prop="cyd_data.sample_date" class="labelItem" style="" size="mini" required>
+								<el-date-picker v-model="cyd_data.sample_date" type="date" value-format="yyyy-MM-dd">
+								</el-date-picker>
+			</el-descriptions-item>
+			<el-descriptions-item  label="被抽检单位签字盖章附件" prop="cyd_data.file_url" class="labelItem" style="" size="mini">
+								<el-upload class="upload-demo" :file-list="fileList" drag :headers="myHeaders"
+									action="http://syjcapi.aielab.net/api/v1/ossUpload" :on-success="uploadSuccess" :limit="1">
+									<i class="el-icon-upload"></i>
+									<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
+								</el-upload>
+			</el-descriptions-item>
+		</el-descriptions>
+	</div>
+<!-- 底部按钮 -->
+		<el-form>
+				<el-form-item class="btn">
+					<el-button type="primary" @click="back()">返回任务详情</el-button>
+					<el-button @click="resetForm()">重置</el-button>
+					<el-button @click="onSubmit">保存,继续添加</el-button>
+				</el-form-item>
+			</el-form>
+			<!-- <el-form ref="form1" :model="form" label-width="110px"
+				style="margin-top: 20px;width: 48%;background-color: aliceblue;padding:10px 1px 1px 10px;">
+			</el-form> -->
+		</div>
+		<!-- </el-card> -->
+</template>
+
+<script>
+	const token = window.sessionStorage.getItem('token')
+	import {
+		provinceAndCityData,
+		regionData,
+		provinceAndCityDataPlus,
+		regionDataPlus,
+		CodeToText,
+		TextToCode
+	} from 'element-china-area-data'
+	export default {
+		name: 'inputSample',
+		data() {
+			return {
+				myHeaders: {
+					Authorization: 'bearer' + token
+				},
+				fileList: [],
+				form: {},
+				cyd_data: {},//抽样单信息上部分
+				unit_test: {},//受检单位信息
+				unit_production: {},//生产单位信息
+				unit_sample: {},//抽样单位信息
+				units: [],
+				production: [],
+				// 样品下拉框
+				sampleList: [],
+				task_id: '',
+				undertake_id: '',
+				// 产地
+				options: regionData,
+				selectedOptions: []
+			}
+		},
+		created() {
+			this.task_id = this.$route.params.task_id
+			this.undertake_id = this.$route.params.under_id
+			console.log(this.task_id)
+			console.log(this.undertake_id)
+			this.getTestObj()
+		},
+		methods: {
+
+			// 获取样本列表
+			async getTestObj() {
+				const result = await this.$http.post('getTestObj', {
+					task_id: this.task_id,
+					undertake_id: this.undertake_id
+				})
+				console.log(result.data.data.sample_info.name)
+				if (result.data.code == 0) {
+					this.sampleList = result.data.data.list
+					this.unit_sample.unit_name = result.data.data.sample_info.name
+				}
+				console.log(this.unit_sample.unit_name)
+			},
+			// 生成样品编码
+			async createCode() {
+				var that = this
+				const result = await this.$http.post('getSampleId', {
+					task_id: this.task_id
+				})
+				console.log(result.data.data.id)
+				if (result.data.code == 0) {
+					that.cyd_data.sample_id = result.data.data.id
+					this.getTestObj()
+				}
+			},
+			// 获取选择产地
+			handleChange() {
+				var that = this
+				var loc = "";
+				// console.log(this.form.place)
+				for (let i = 0; i < this.selectedOptions.length; i++) {
+					loc += CodeToText[this.selectedOptions[i]];
+				}
+				// console.log(loc)
+				that.cyd_data.place = loc
+				console.log(that.cyd_data.place)
+			},
+			// 上传成功(要确认数据)
+			uploadSuccess(res) {
+				console.log(res.data)
+				this.cyd_data.file_url = res.data.fileUrl
+				this.cyd_data.file_name = res.data.fileName
+			},
+			async onSubmit() {
+				console.log(this.cyd_data.sample_name)
+				var that = this
+				console.log(that.cyd_data)
+				that.cyd_data.task_id = that.task_id
+				that.cyd_data.undertake_id = that.undertake_id
+				that.form.cyd_data = that.cyd_data
+				that.form.unit_test = that.unit_test
+				that.form.unit_production = that.unit_production
+				that.form.unit_sample = that.unit_sample
+				console.log(that.form)
+				const result = await this.$http.post('saveSample', this.form)
+				if (result.data.code == 0) {
+					// that.form.sample_id = result.data.data.id
+					this.$message({
+						type: 'success',
+						message: '提交抽样单成功!'
+						
+					});
+				}
+			},
+			// 重置表单
+			resetForm() {
+				// console.log(this.form)
+					this.cyd_data = '';
+					this.unit_test = '';
+					this.unit_production = '';
+					this.unit_sample = '';
+					this.selectedOptions = '';
+			},
+			// 返回
+			back() {
+				var that = this
+				console.log(that.task_id)
+				this.$router.push({
+					name: 'setTaskcd',
+					params: {
+						id: that.task_id
+					}
+				})
+			}
+		},
+	}
+</script>
+
+<style lang="less" scoped>
+	.form {
+		display: flex;
+		flex-direction: row;
+		justify-content: center;
+		align-content: flex-start;
+	}
+
+	.el-descriptions {
+		width: 80%;
+		margin: auto;
+	}
+
+	/deep/ .el-descriptions__title {
+		margin: auto;
+		font-size: 1.25rem;
+		// font-weight: 31.25rem !important;
+	}
+	.btn{
+		margin-top:20px ;
+		// float: right;
+		text-align: center;
+	}
+	/deep/ #sampleReport{
+		.el-descriptions-item__label.is-bordered-label{
+		width: 15rem;}
+	}
+</style>

+ 72 - 72
src/components/jc/setTaskcd.vue

@@ -27,58 +27,62 @@
 		<el-tabs v-model="activeName" type="card" @tab-click="handleClick">
 			<el-tab-pane label="任务详情" name="first">
 				<el-descriptions class="margin-top" title=" " :column="2" :size="size" border>
+					<el-descriptions-item>
+						<template slot="label">
+							创建单位
+						</template>
+						{{readForm.creater.name}}
+					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
 							发布单位
 						</template>
-						{{readForm.releaserInfo.rymc}}
+						{{readForm.releaser.name}}
 					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
 							年度
 						</template>
-						{{readForm.taskInfo.year}}
+						{{readForm.year}}
 					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
-							开始时间和结束时间
+							监测类型
 						</template>
-						{{readForm.taskInfo.starttime}}至{{readForm.taskInfo.endtime}}
+						{{readForm.task_class}}
 					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
-							抽样信息上报截止时间
+							开始时间
 						</template>
-						{{readForm.taskInfo.endtime_cydsb}}
+						{{readForm.starttime}}
 					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
-							监测类型
+							结束时间
 						</template>
-						{{readForm.taskInfo.task_class}}
+						{{readForm.endtime}}
 					</el-descriptions-item>
-					<el-descriptions-item>
+					
+					<!-- <el-descriptions-item>
 						<template slot="label">
 							行业
 						</template>
-						<!-- <div v-if="readForm.product!=[]"> -->
 						<span>{{readForm.model_type}}</span>
-						<!-- </div> -->
-						<!-- <div v-else>暂无</div> -->
-					</el-descriptions-item>
+					</el-descriptions-item> -->
 					<el-descriptions-item>
 						<template slot="label">
 							抽检分离
 						</template>
-						<span v-if="readForm.taskInfo.is_divide==1">是</span>
-						<span v-if="readForm.taskInfo.is_divide==0">否</span>
+						<span v-if="readForm.is_divide==1">是</span>
+						<span v-if="readForm.is_divide==0">否</span>
 					</el-descriptions-item>
 					<el-descriptions-item>
 						<template slot="label">
 							附件
 						</template>
 						<div v-if="readForm.file_url==null">无</div>
-						<el-link v-else type="primary" :href="readForm.taskInfo.file_url">下载附件</el-link>
+						<el-link v-else type="primary" :href="readForm.file_url">下载附件</el-link>
 					</el-descriptions-item>
 
 				</el-descriptions>
@@ -87,28 +91,26 @@
 						<template slot="label">
 							备注
 						</template>
-						{{readForm.taskInfo.log}}
+						{{readForm.log}}
 					</el-descriptions-item>
 				</el-descriptions>
-				<el-descriptions class="margin-top" :size="size" border>
+				<!-- <el-descriptions class="margin-top" :size="size" border>
 					<el-descriptions-item>
 
 						<template slot="label">
 							检测对象
 						</template>
 						{{productNameText}}
-						<!-- <span v-for="item in readForm.product">{{item.product_name}}、</span> -->
 					</el-descriptions-item>
-				</el-descriptions>
-				<el-descriptions class="margin-top" :size="size" border>
+				</el-descriptions> -->
+				<!-- <el-descriptions class="margin-top" :size="size" border>
 					<el-descriptions-item>
 						<template slot="label">
 							检测项
 						</template>
 						{{pesticidesNameText}}
-						<!-- <span v-for="item in readForm.pesticides">{{item.test_name}}、</span> -->
 					</el-descriptions-item>
-				</el-descriptions>
+				</el-descriptions> -->
 				<!-- <el-table :data="underTask" border stripe highlight-current-row  @current-change="handlecyCurrentChange" style="width: 100%"
 					:row-style="rowStyle" :cell-style="cellStyle">
 					<el-table-column :key="table.label" v-for="table in tableHeader2" :label="table.label"
@@ -173,7 +175,7 @@
 					</el-form> -->
 				<el-row style="margin-right: 0px;">
 				
-				<el-table :data="sampleTask" border stripe highlight-current-row  @current-change="handlecyCurrentChange" style="width: 100%"
+				<el-table :data="underTask" border stripe highlight-current-row  @current-change="handlecyCurrentChange" style="width: 100%"
 					:row-style="rowStyle" :cell-style="cellStyle">
 					<el-table-column :key="table.label" v-for="table in tableHeader2" :label="table.label"
 						:prop="table.prop" align="center" :width="table.width" :fixed="table.fixed" />
@@ -304,9 +306,9 @@
 						</template>
 					</el-table-column>
 					<el-table-column label="单位">
-						<template slot-scope="scope">
+						<!-- <template slot-scope="scope">
 							<span v-model="scope.row.unit" size="small">mg/kg</span>
-						</template>
+						</template> -->
 					</el-table-column>
 					<el-table-column label="抽检结果">
 						<template slot-scope="scope">
@@ -468,13 +470,13 @@
 				<!-- </span> -->
 			</el-dialog>
 
-			<el-tab-pane label="报告上传" name="five">
+			<!-- <el-tab-pane label="报告上传" name="five">
 				<el-upload class="upload-demo" :file-list="fileList" drag :headers="myHeaders"
 					action="http://syjcapi.aielab.net/api/v1/ossUpload" :on-success="uploadSuccess" :limit="1">
 					<i class="el-icon-upload"></i>
 					<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div>
 				</el-upload>
-			</el-tab-pane>
+			</el-tab-pane> -->
 		</el-tabs>
 		</div>
 	</div>
@@ -503,11 +505,11 @@
 				productNameText: '',
 				pesticidesNameText: '',
 				readForm: {
+					creater: [],
+					releaser: [],
 					modelInfo: [],
 					model_type: '',
-					pesticides: [],
-					releaserInfo: [],
-					taskInfo: []
+				
 				},
 				sample_name: '',
 				sample_id: '',
@@ -680,27 +682,29 @@
 				],
 				tableHeader2: [{
 						label: '抽样机构',
-						prop: 'bear_name',
+						prop: 'sampleOrgId.name',
 						width: 180,
 					}, {
 						label: '检测机构',
-						prop: 'check_name'
+						prop: 'checkOrgId.name'
 					},
 					{
 						label: '抽样地区',
-						prop: 'address'
-					}, {
-						label: '抽样数量',
-						prop: 'sample_number',
-						width: 100,
-					},
-					{
-						label: '报告上传单位',
-						prop: 'report_name'
-					}, {
-						label: '报告上传截止时间',
-						prop: 'uploadtime'
-					}
+						prop: 'sample_address'
+					}, 
+					// {
+					// 	label: '抽样数量',
+					// 	prop: 'sample_number',
+					// 	width: 100,
+					// },
+					// {
+					// 	label: '报告上传单位',
+					// 	prop: 'report_name'
+					// },
+					//  {
+					// 	label: '任务截止时间',
+					// 	prop: 'uploadtime'
+					// }
 				],
 				fileList: [],
 				total: 0,
@@ -717,12 +721,11 @@
 		created() {
 			this.task_id = this.$route.params.id
 
-
-			this.getTaskDetail()
+			this.getTask()
 			// this.getJcdList()
 			// this.getmodelList()
 			// this.getUnderTask()
-			this.getSampleTaskList()
+			// this.getSampleTaskList()
 			this.getCheckTaskList()
 		},
 
@@ -780,11 +783,11 @@
 				// under_id = 
 			},
 			//获取任务详情
-			async getTaskDetail() {
+			async getTask() {
 				var that = this
 				const {
 					data: res
-				} = await this.$http.post("getTaskInfo", {
+				} = await this.$http.post("getTask", {
 					task_id: that.task_id,
 					pageNum: that.queryInfo.pageNum,
 					pageSize: that.queryInfo.pageSize
@@ -792,22 +795,22 @@
 				
 				that.readForm = res.data
 				console.log(that.readForm)
-				that.productNameText = that.readForm.product.map(el => el.product_name).join('、 ')
-				that.pesticidesNameText = that.readForm.pesticides.map(el => el.test_name).join('、 ')
-				console.log(res.data.modelInfo)
+				// that.productNameText = that.readForm.product.map(el => el.product_name).join('、 ')
+				// that.pesticidesNameText = that.readForm.pesticides.map(el => el.test_name).join('、 ')
+				// console.log(res.data.modelInfo)
 			
-					if (res.data.modelInfo.type_id == '1') {
-						that.readForm.model_type = '种植业'
-					} else if (res.data.modelInfo.type_id == '2') {
-						that.readForm.model_type = '畜牧业'
-					} else if (res.data.modelInfo.type_id == '3') {
-						that.readForm.model_type = '渔业' 
+				// 	if (res.data.modelInfo.type_id == '1') {
+				// 		that.readForm.model_type = '种植业'
+				// 	} else if (res.data.modelInfo.type_id == '2') {
+				// 		that.readForm.model_type = '畜牧业'
+				// 	} else if (res.data.modelInfo.type_id == '3') {
+				// 		that.readForm.model_type = '渔业' 
 
-					} else {
-						that.readForm.model_type = '其他'
-					}
+				// 	} else {
+				// 		that.readForm.model_type = '其他'
+				// 	}
 				
-				console.log(that.readForm.model_type)
+				// console.log(that.readForm.model_type)
 				// that.underTask = res.data.underTaskList.rows
 				// that.unitTask = res.data.unitTaskList.rows
 				// console.log(that.underTask)
@@ -854,7 +857,7 @@
 				});
 				console.log(res)
 				that.underTask = res.data.rows
-				console.log(that.sampleTask)
+				console.log(that.underTask)
 			},
 			
 			// 上传成功
@@ -1069,15 +1072,12 @@
 			// 填报抽样单
 			input(id) {
 				console.log(id)
-				// // console.log(this.currentRow.id)
-				// if(this.currentRow == null){
-				// 	this.$message('请选中一条表格数据');
-				// 	return
-				// }
+				console.log(this.readForm.id)
+
 						this.$router.push({
-					name: 'inputSample',
+					name: 'fillSampleReport',
 					params: {
-						task_id: this.readForm.taskInfo.id,
+						task_id: this.readForm.id,
 						under_id:id
 					}
 				})

+ 2 - 2
src/main.js

@@ -12,9 +12,9 @@ import axios from 'axios'
 
 
 // 使用axios
-axios.defaults.baseURL = 'http://syjcapi.aielab.net/api/v1'
+// axios.defaults.baseURL = 'http://syjcapi.aielab.net/api/v1'
 //axios.defaults.baseURL = 'http://192.168.3.52/api/v1'
-// axios.defaults.baseURL = 'http://new.syjc.com/api/v1'
+axios.defaults.baseURL = 'http://new.syjc.com/api/v1'
 Vue.prototype.$http = axios
 Vue.config.productionTip = false
 axios.interceptors.request.use(

+ 20 - 20
src/router/index.js

@@ -63,29 +63,25 @@ const routes = [{
 				name:'undertakeReport',
 				component: () => import('../components/admin/undertakeReport')
 			},
-			// {
-			// 	path: '/admin/readSampleList',
-			// 	name:'readSampleList',
-			// 	component: () => import('../components/admin/readSampleList')
-			// },
-		{
-			path: '/admin/taskSampleZx',
-				name:'taskSampleZx',
-				component: () => import('../components/admin/taskSampleZx')
-			},
+		// {
+		// 	path: '/admin/taskSampleZx',
+		// 		name:'taskSampleZx',
+		// 		component: () => import('../components/admin/taskSampleZx')
+		// 	},
 			{
 				path: '/admin/undertakeReportZx',
 					name:'taskSampleZx',
 					component: () => import('../components/admin/undertakeReportZx')
-			},{
+			},
+			{
 				path: '/admin/jgsampleDetail',
 					name:'jgsampleDetail',
 					component: () => import('../components/admin/jgsampleDetail')
+			},{
+				path: '/admin/regulatoryAuthority',
+				name:'regulatoryAuthority',
+				component: () => import('../components/admin/regulatoryAuthority')
 			},
-			// 	path: '/admin/taskSample',
-			// 	component: () => import('../components/admin/taskSample')
-			// }
-
 		]
 	},
 	{
@@ -151,11 +147,15 @@ const routes = [{
 					name:'setTask',
 					component: () => import('../components/jc/setTask')
 			},
-			// {
-			// 		path: '/jc/sampleDetailcd',
-			// 		name:'sampleDetailcd',
-			// 		component: () => import('../components/jc/sampleDetailcd')
-			// }
+			{
+					path: '/jc/sampleReport',
+					name:'sampleReport',
+					component: () => import('../components/jc/sampleReport')
+			},{
+				path: '/jc/fillSampleReport',
+				name:'fillSampleReport',
+				component: () => import('../components/jc/fillSampleReport')
+		}
 		]
 	},{
 		path: '/pdf',