Переглянути джерело

基建工程新增 基建工程历史列表

zhnghongrui 1 рік тому
батько
коміт
a1b2ef728c

+ 35 - 1
api/common.js

@@ -1,11 +1,45 @@
 import request from '@/utils/request'
 
+
+
+// 获取基建工程历史
+export function getInfrastructureList(id, type) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/' + id + '/' + type,
+		'method': 'get',
+	})
+}
+
+//基建工程新增
+export function SubmitInfrastructure(param) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/AddApp',
+		'method': 'post',
+		'data': param
+	})
+}
+//查询基建工程详情
+export function getInfrastructureDetails(id) {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/' + id,
+		'method': 'get',
+	})
+}
+//基建工程查询工程名称
+export function getInfrastructureNameList() {
+	return request({
+		'url': '/zdsz/engineeringInfrastructure/select',
+		'method': 'get',
+
+	})
+}
 //危险作业工程修改详情
 export function updateDangerousWorkProject(param) {
 	return request({
 		'url': '/zdsz/engineeringDangerous',
 		'method': 'put',
-})}
+	})
+}
 
 // 获取顶管工程历史
 export function getTopPipeHistoryList(id, type) {

+ 2 - 2
config.js

@@ -2,8 +2,8 @@
 module.exports = {
   
   // baseUrl: 'http://192.168.4.11:8080',
-  baseUrl: 'http://192.168.4.20:8080',
-  // baseUrl: 'http://192.168.4.6:8080',
+  //baseUrl: 'http://192.168.4.20:8080',
+   baseUrl: 'http://192.168.4.6:8080',
    // baseUrl: 'http://192.168.4.14:8089',
   // 应用信息
   appInfo: {

+ 8 - 1
pages/TopPipeWork/TopPipeWork.vue

@@ -260,6 +260,7 @@
 				headers: {
 					Authorization: "Bearer " + getToken()
 				},
+				loading: false,
 				time: '', //施工时间
 				open: false,
 				objValue: '', //上一页面传过来的值  新增接口用
@@ -705,7 +706,13 @@
 					this.$modal.msg("请输入数量")
 					return
 				}
-
+				if (this.imgArr.length <= 0) {
+					this.$modal.msg('请上传照片或视频')
+					return
+				}
+				if (this.loading == false) {
+					this.$modal.msg('照片或视频未上传完毕,无法提交!')
+				}
 				let param = {
 					id: this.id,
 					enginId: this.enginId,

+ 846 - 34
pages/infrastructure/infrastructure.vue

@@ -1,44 +1,804 @@
 <template>
 	<!-- 基建工程 -->
 	<view>
-		<view class="view-bg">
-			<view class="uni-common-mt" style="width: 100%;">
-				<text class="uni-title uni-common-pl">工程名称</text>
-				<view style="width: 100%;padding-right: 20rpx;box-sizing: border-box;">
-					<textarea class="textarea" placeholder="请输入建设单位" maxlength="100"
-						placeholder-style="padding: 10rpx;"
-						style="width: 100%;height: 100%;border: 1rpx solid #cccccc; border-radius: 15rpx;padding: 10rpx;line-height:normal;"
-						auto-height v-model="projectName"></textarea>
+		<view class="background">
+
+			<view class="uni-list">
+				<view class="container">
+					<view>
+						工程名称
+					</view>
+					<view v-if="this.isEmpty(this.projectName.id)" style="margin-top: 10;"
+						@click="pickerShow('gcmc',0)">
+						<span style="color: darkgray;">请选择工程名称</span>
+					</view>
+					<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('gcmc',0)">
+						<span style="color: black;">{{projectName.name}}</span>
+					</view>
+				</view>
+
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>工程地址</text>
+					<input class="uni-input" type="text" v-model="gcdzValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>建设单位</text>
+					<input class="uni-input" type="text" v-model="jsdwValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>开工时间</text>
+					<input class="uni-input" type="text" v-model="kgsjValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>计划工期</text>
+					<input class="uni-input" type="text" v-model="jhgqValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="uni-list">
+				<view class="container">
+
+					<text>竣工时间</text>
+					<input class="uni-input" type="text" v-model="jgsjValue" disabled="true"
+						style="margin-left: 10px;text-align: right;"></input>
+				</view>
+			</view>
+			<view class="container">
+				<view class="uni-common-mt" style="width: 100%;">
+					<text class="uni-title uni-common-pl">工程内容</text>
+					<view style="width: 100%;padding-right: 20rpx;box-sizing: border-box;">
+						<textarea class="textarea" v-model="gcnrValue" disabled="true"
+							placeholder-style="padding: 10rpx;"
+							style="width: 100%;height: 100%;border: 1rpx solid #cccccc; border-radius: 15rpx;padding: 10rpx;line-height:normal;"
+							auto-height></textarea>
+					</view>
 				</view>
 			</view>
-			
-				 
+
+
+			<view class="uni-list">
+				<view class="align-items" style="margin-bottom: 20px;">
+					<!-- 	<view class="container" style="color: gainsboro;">*请上传文件</view> -->
+					<view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px; margin-left: 10px;">
+						<!-- <image src="/static/images/chooseimg.png" mode=""
+									style="width: 100rpx; height: 100rpx; margin: 0 12rpx;; " @click="chooseFile()"></image> -->
+						<view v-for="(item,index) in fileArr" :key="index" style="position: relative;">
+							<view style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
+								@click="chooseModel(item.picUrl,item.fileName)">
+								{{item.fileName}}
+								<!-- <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;">
+										</image> -->
+
+							</view>
+
+							<!-- <view @click="removeFile(index)"
+										style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
+										<uni-icons type="close" color="darkgray" size="18"></uni-icons>
+									</view> -->
+						</view>
+					</view>
+				</view>
+			</view>
+
+
+
+
+			<SelectPicker :list="selectList" @change="changeSelect" v-if="open" @close="close" titleKey="name"
+				subtitleKey="id" v-model="name"></SelectPicker>
+
+
+			<SelectPicker :list="dictOptions" @change="changeSelectDict" v-if="openDict" @close="closeDict"
+				titleKey="dictLabel" subtitleKey="dictValue" v-model="dictLabel"></SelectPicker>
 		</view>
-	
-		<view class="view-bg">
-			
+
+		<view class="background">
+			<view>
+				<view class="uni-list">
+					<view style="font-size: 16px;margin-left: 10px;margin-top: 10px;">
+						{{objValue.value}}
+
+						<span
+							style="color: blue;font-size: 14px;  display: flex;justify-content:flex-end; margin-right: 15px;"
+							@click="history">历史</span>
+					</view>
+					<view class="container">
+
+						<view>
+							施工时间
+						</view>
+						<view style="margin-top: 10;" @click="openDatetimePicker()">
+							<span style="color: black;">{{time}}</span>
+						</view>
+					</view>
+
+					<span
+						style="color: blue;font-size: 14px;  display: flex;justify-content:flex-end; margin-right: 15px;"
+						@click="change">切换</span>
+					<view class="uni-list">
+						<view class="container">
+
+							<view>
+								材 质
+							</view>
+							<view v-if="isNew==false">
+								<view v-if="this.isEmpty(this.materialValue.id)" style="margin-top: 10;"
+									@click="pickerShow('cz')">
+									<span style="color: darkgray;">请选择材质</span>
+								</view>
+								<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('cz')">
+									<span style="color: black;">{{materialValue.name}}</span>
+								</view>
+							</view>
+							<view v-else-if="isNew==true">
+
+								<input class="uni-input" type="text" v-model="materialNewValue" placeholder="请输入材质"
+									style="margin-left: 10px;text-align: right;"></input>
+							</view>
+						</view>
+					</view>
+					<view class="uni-list">
+						<view class="container">
+
+							<view>
+								规 格
+							</view>
+							<view v-if="isNew==false">
+								<view v-if="this.isEmpty(this.specificationValue.id)" style="margin-top: 10;"
+									@click="pickerShow('gg')">
+									<span style="color: darkgray;">请选择规格</span>
+								</view>
+								<view v-else class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('gg')">
+									<span style="color: black;">{{specificationValue.name}}</span>
+								</view>
+							</view>
+							<view v-else-if="isNew==true">
+
+								<input class="uni-input" type="text" v-model="specificationNewValue" placeholder="请输入规格"
+									style="margin-left: 10px;text-align: right;"></input>
+							</view>
+						</view>
+					</view>
+					<view class="uni-list">
+						<view class="container">
+
+							<text>数 量</text>
+							<input class="uni-input" type="number" v-model="inputNumberValue" placeholder="请填写数量"
+								maxlength="11" style="margin-left: 10px;text-align: right;"></input>
+						</view>
+					</view>
+				</view>
+			</view>
+
+			<view class="align-items" style="margin-top: 20px;margin-bottom: 20px;">
+				<view class="container" style="color: gainsboro;">*请上传照片</view>
+				<view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px; margin-left: 10px;">
+					<image src="/static/images/chooseimg.png" mode=""
+						style="width: 100rpx; height: 100rpx; margin: 0 12rpx;; " @click="choose()"></image>
+					<view v-for="(item,index) in imgArr" :key="index" style="position: relative;">
+						<view
+							v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' ">
+							<image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
+								@click="showPhoto(index)">
+							</image>
+						</view>
+						<view v-else>
+							<video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
+						</view>
+						<view @click="remove(index)"
+							style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
+							<uni-icons type="close" color="darkgray" size="18"></uni-icons>
+						</view>
+					</view>
+				</view>
+			</view>
 		</view>
+		<view class="action-btn">
+			<button @click="submit" class="btn cu-btn block bg-blue lg round">确认上传</button>
+		</view>
+
+		<bottom-sheet ref="refShare" :data="historyList" :TitleType="objValue.value"></bottom-sheet>
+		<yt-dateTimePicker ref="myPicker" @submit="handleSubmit" :start-year="2024" :end-year="2099"
+			:time-hide="[true, true, true, true, true, true]" :time-label="['年', '月', '日', '时', '分', '秒']" />
+		<!-- 下载提示页面 -->
+		<mypopup :show="show_loding" :popupText="popupText" :titleText="titleText" :cancelText="cancelText"
+			:confirmText="confirmText" @close="cancel_loding" @confirm="confirm_loding">
+		</mypopup>
+
 	</view>
 </template>
 
 <script>
+	import SelectPicker from '../../components/selectPicker/select_picker.vue'
+	import bottomSheet from '../../components/bottomSheet/bottomSheetMore.vue'
+	import mypopup from '../../components/mypopup/mypopup.vue'
+	import uniIcons from '../../uni_modules/uni-icons/components/uni-icons/uni-icons.vue'
+
+	import {
+		getDicts
+	} from "@/api/system/dict/data";
+	import {
+		getToken
+	} from '../../utils/auth';
+	import {
+
+		getEnginMaterialQualityList,
+		getEnginSpecificationsList,
+		getInfrastructureNameList,
+		getInfrastructureDetails,
+		SubmitInfrastructure,
+		getInfrastructureList
+
+	} from '@/api/common'
 	export default {
+		components: {
+			SelectPicker,
+			uniIcons,
+			bottomSheet,
+			mypopup
+		},
 		data() {
 			return {
-				projectId:"",
-				projectName:"",
-				buildUnit:"",
+
+				historyList: {}, //历史数据
+				show_loding: false,
+				popupText: '', //对话框内容
+				titleText: '',
+				cancelText: '',
+				confirmText: '',
+				objValue: '', //上一页面传过来的值  新增接口用
+				headers: {
+					Authorization: "Bearer " + getToken()
+				},
+				time: '', //施工时间
+				open: false,
+				objValue: '', //上一页面传过来的值  新增接口用
+				openDict: false,
+				selectList: [],
+				dictOptions: [],
+				imgArr: [],
+				fileArr: [],
+				loading: false,
+				specificationValue: {}, //规格
+				materialValue: {}, //材质
+				inputNumberValue: '',
+				projectName: '', //工程名称
+				gcdzValue: '', //工程地址
+				jsdwValue: '', //建设单位
+
+				kgsjValue: '', //开工时间
+				jhgqValue: '', //计划工期
+
+				jgsjValue: '', //竣工时间
+				gcnrValue: '', //工程内容
+				id: '', //工程id
+				fileUrl: '', //点击的文件地址
+				fileName: '', //点击的文件名称
+				zEngineeringMaterialBo: [], //给后台传的值  用料列表
+				isNew: false, //是否新增
+				specificationNewValue: '', //规格新增内容
+				materialNewValue: '', //材质新增内容
+
 			}
 		},
+		created() {
+			this.time = this.traversalTime(new Date().getTime()) //在data里定义变量-nowTime
+			console.log(this.time)
+		},
+		onLoad(options) {
+			if ('params' in options) {
+				this.objValue = JSON.parse(decodeURIComponent(options.params));
+			}
+
+
+		},
 		methods: {
-			
+			//判断是否选择
+
+			isEmpty(str) {
+
+				return (!str || 0 === str.length);
+
+			},
+
+			change() {
+				this.isNew = !this.isNew;
+			},
+			handleSubmit(e) {
+
+				this.time = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`;
+
+			},
+
+			//获取当前时间
+			traversalTime(timestamp) {
+				//timestamp(时间戳)是整数,否则要parseInt转换
+				let time = new Date(timestamp);
+				let y = time.getFullYear();
+				let m = time.getMonth() + 1;
+				let d = time.getDate();
+				let h = time.getHours();
+				let mm = time.getMinutes();
+				let s = time.getSeconds();
+				return y + '-' + this.addTimes(m) + '-' + this.addTimes(d) + ' ' + this.addTimes(h) + ':' + this
+					.addTimes(
+						mm) + ':' + this.addTimes(s);
+
+
+			},
+			addTimes(m) {
+				return m < 10 ? '0' + m : m
+			},
+			// 打开picker
+			openDatetimePicker() {
+				this.$refs.myPicker.show();
+			},
+
+			// 关闭picker
+			closeDatetimePicker() {
+				this.$refs.myPicker.hide();
+			},
+			showPhoto(index) {
+				uni.previewImage({
+					current: index,
+					urls: this.imgArr,
+				})
+
+			},
+			remove(index) {
+				uni.showModal({
+					title: '提示',
+					content: '是否删除该图片或视频?',
+					success: (res) => {
+						if (res.confirm) {
+							this.imgArr.splice(index, 1)
+							console.log('this.imgarr', this.imgArr)
+							if (this.imgArr.length <= 0) {
+								this.photo = true;
+							}
+						}
+					}
+				})
+			},
+			choose() {
+				let _this = this;
+				uni.showActionSheet({
+					title: '上传',
+					itemList: ['图片', '视频'],
+					success: (res) => {
+						console.log(res)
+						if (res.tapIndex == 0) {
+							this.chooseimage()
+						} else {
+							this.choosevideo()
+						}
+					}
+				})
+			},
+			chooseimage() {
+
+				let _this = this;
+				console.log('图片', _this.headers)
+				uni.chooseImage({
+					sizeType: ['album', 'camera'],
+					success(resp) {
+						resp.tempFiles.forEach((item, index) => {
+							const task = uni.uploadFile({
+								url: _this.$HTTP + `/obs`,
+								filePath: item.path,
+								name: 'file',
+								formData: {},
+								header: _this.headers,
+
+								success: res => {
+									// 判断是否json字符串,将其转为json格式
+									console.log("结果", res)
+									// let data = _this.$u.test.jsonString(res
+									// 	.data) ? JSON.parse(res.data) : res.data;
+									let data = JSON.parse(res.data);
+									if (![200].includes(data.code)) {
+										// this.uploadError(index, data);
+										_this.$modal.msg(data.msg)
+									} else {
+										if (_this.progress === 100) {
+											console.log('_this.progress', _this.progress)
+											//console.log('data----', data)data
+											console.log('res--', res)
+											_this.imgArr.push(data.data.url)
+											console.log('imgArr', _this.imgArr)
+											_this.$modal.msg('上传成功!')
+											_this.photo = false;
+										}
+									}
+								},
+								fail: e => {
+									console.log(e)
+									_this.$modal.msg('上传失败!')
+									//_this.uploadError(index, e);
+								},
+								complete: res => {
+									uni.hideLoading();
+									_this.uploading = false;
+
+								}
+							});
+							task.onProgressUpdate(res => {
+								_this.progress = res.progress;
+								console.log('onProgressUpdate', res)
+								console.log('task.onProgressUpdate', _this.progress)
+								uni.showLoading({
+									title: '上传中'
+								})
+								if (_this.progress != 100) {
+									_this.loading = false
+									console.log('_this.loading false', _this.loading)
+								} else {
+									_this.loading = true
+									console.log('_this.loading true', _this.loading)
+								}
+							});
+
+						})
+
+					},
+				})
+			},
+
+			choosevideo() {
+				let _this = this;
+				console.log('视频')
+				uni.chooseVideo({
+					sourceType: ['album', 'camera'],
+					maxDuration: 30,
+					success(resp) {
+						const task = uni.uploadFile({
+							url: _this.$HTTP + `/obs`,
+							filePath: resp.tempFilePath,
+							name: 'file',
+							formData: {},
+							header: _this.headers,
+							success: res => {
+								// 判断是否json字符串,将其转为json格式
+								let data = JSON.parse(res.data);
+								if (![200].includes(res.statusCode)) {
+									this.uploadError(index, data);
+								} else {
+									//上传成功
+									if (_this.progress === 100) {
+										console.log('_this.progress', _this.progress)
+										_this.imgArr.push(data.data.url)
+										console.log('imgArr', _this.imgArr)
+										_this.$modal.msg('上传成功!')
+										_this.photo = false;
+									}
+								}
+							},
+							fail: e => {
+								_this.$modal.msg('上传失败!')
+								this.uploadError(index, e);
+							},
+							complete: res => {
+								uni.hideLoading();
+								_this.uploading = false;
+							}
+						});
+						task.onProgressUpdate(res => {
+							_this.progress = res.progress;
+							console.log('onProgressUpdate', res)
+							uni.showLoading({
+								title: '上传中'
+							})
+							if (_this.progress != 100) {
+								_this.loading = false
+								console.log('_this.loading false', _this.loading)
+							} else {
+								_this.loading = true
+								console.log('_this.loading true', _this.loading)
+							}
+						});
+
+					},
+				})
+			},
+			chooseModel(url, name) {
+				this.cancelText = '复制';
+				this.confirmText = "下载";
+				this.titleText = "温馨提示"
+				this.popupText = "下载或者复制链接";
+				this.show_loding = true;
+				this.fileName = name;
+				this.fileUrl = url; //文件名称和下载地址赋值
+
+			},
+			//取消按钮
+			cancel_loding() {
+				let _this = this;
+				_this.show_loding = false;
+				console.log("复制")
+				if (!_this.isEmpty(_this.fileUrl)) {
+					console.log(_this.fileUrl)
+					console.log(_this.fileName)
+					uni.setClipboardData({
+						data: _this.fileUrl,
+						success() {
+							uni.showToast({
+								title: '已复制' + _this.fileName + '地址成功 请在浏览器打开',
+								icon: 'none'
+							});
+						},
+						fail(e) {
+							console.log("失败", e)
+							uni.showToast({
+								title: '复制失败',
+								icon: 'none'
+							});
+						}
+					});
+
+				}
+			},
+			//确定按钮
+			confirm_loding() {
+				this.show_loding = false;
+				console.log("下载")
+				this.download(this.fileUrl, this.fileName);
+
+
+			},
+
+			getDownLoadFilePath() {
+				let cachePath = `${uni.env.USER_DATA_PATH}/downloads`
+				let fm = uni.getFileSystemManager()
+				try {
+					// 访问成功则存在
+					fm.accessSync(cachePath)
+				} catch (error) {
+					// 不存在则新建
+					fm.mkdirSync(cachePath, true)
+				}
+				return cachePath
+			},
+			download(url, name) {
+
+				let savePath = this.getDownLoadFilePath();
+				console.log('点击下载', url);
+				console.log('点击下载333', savePath);
+				//var savePath = uni.env.USER_DATA_PATH + '/savePath'
+
+				uni.downloadFile({
+					url: url,
+					success: response => {
+						if (response.statusCode === 200) {
+							console.log("数据", response)
+							uni.getFileSystemManager().saveFile({
+								tempFilePath: response.tempFilePath,
+								filePath: `${savePath}/${name}`,
+								success: (resData) => {
+									console.log('保存路径', resData.savedFilePath)
+									console.log("dd", resData)
+									uni.showToast({
+										title: '下载成功'
+									})
+								},
+								fail: error => {
+									console.log('error: ', error)
+								}
+							})
+						}
+					},
+					fail: error => {
+						debugger
+						console.log("ddd", error)
+					}
+
+				})
+
+
+
+			},
+			pickerShow(e) {
+				this.type = e; //赋值类型
+				if (e == 'gcmc') {
+					this.open = true;
+					getInfrastructureNameList().then(response => {
+						this.selectList = response.data;
+					});
+
+				} else if (e == 'cz') { //材质
+					this.open = true;
+					getEnginMaterialQualityList("基建工程").then(response => {
+						this.selectList = response.data;
+					});
+
+				} else if (e == 'gg') { //规格
+					if (this.isEmpty(this.materialValue.id)) {
+						this.$modal.msg('请选择材质')
+
+					} else {
+						this.open = true;
+						this.selectList = this.materialList;
+
+					}
+
+				}
+
+			},
+			changeSelect(item, index) {
+				// this.index = index;
+				// this.address = item.communityName;
+				this.open = false;
+
+				if (this.type == 'gcmc') {
+					this.projectName = item;
+					uni.showLoading({
+						title: '加载中'
+					})
+					getInfrastructureDetails(item.id).then(res => {
+						uni.hideLoading();
+						this.projectName.name = res.data.enginName;
+						this.gcdzValue = res.data.enginAddre; //工程地址
+						this.jsdwValue = res.data.constructUnit; //建设单位
+
+						this.kgsjValue = res.data.startTime; //开工时间
+						this.jhgqValue = res.data.plannedDuration; //计划工期
+
+						this.jgsjValue = res.data.completedTime; //竣工时间
+						this.gcnrValue = res.data.enginContent; //工程内容
+						this.fileArr = res.data.pics;
+						this.id = res.data.id;
+
+
+
+
+
+
+
+					})
+
+				} else if (this.type == 'cz') {
+					this.materialValue = item;
+					this.specificationValue = ''; //重置规格
+					//根据材质ID 获取规格数据
+					getEnginSpecificationsList(item.id).then(res => {
+						this.materialList = res.data
+					})
+				} else if (this.type == 'gg') {
+					this.specificationValue = item;
+
+				}
+
+			},
+			//关闭弹窗
+			close(e) {
+				this.open = false
+			},
+
+			history() {
+				if (this.isEmpty(this.projectName.id)) {
+					this.$modal.msg('请选择工程名称')
+					return
+				}
+
+				getInfrastructureList(this.id, this.objValue.value).then(response => {
+
+					this.historyList = response.data
+					if (response.data.zEngineeringNodeBo.zEngineeringInfoBoList != null) {
+						this.$refs.refShare.handleShowShare();
+					} else {
+						this.$modal.msg("暂无历史信息")
+					}
+
+				});
+			},
+			submit() {
+				//提交
+
+				if (this.isEmpty(this.projectName.id)) {
+					this.$modal.msg('请选择工程名称')
+					return
+				}
+				if (this.isNew) {
+					if (this.isEmpty(this.materialNewValue)) {
+						this.$modal.msg("请输入材质")
+						return
+					}
+					if (this.isEmpty(this.specificationNewValue)) {
+						this.$modal.msg("请输入规格")
+						return
+					}
+				} else {
+					if (this.isEmpty(this.materialValue.id)) {
+						this.$modal.msg("请选择材质")
+						return
+					}
+					if (this.isEmpty(this.specificationValue.id)) {
+						this.$modal.msg("请选择规格")
+						return
+					}
+				}
+				if (this.isEmpty(this.inputNumberValue)) {
+					this.$modal.msg("请输入数量")
+					return
+				}
+				if (this.imgArr.length <= 0) {
+					this.$modal.msg('请上传照片或视频')
+					return
+				}
+				if (this.loading == false) {
+					this.$modal.msg('照片或视频未上传完毕,无法提交!')
+					return
+				}
+				if (this.isNew) {
+					//新增
+					this.zEngineeringMaterialBo.push({
+						specifications: this.specificationNewValue,
+						materialQuality: this.materialNewValue,
+						number: this.inputNumberValue,
+					})
+				} else {
+					//选择的
+					this.zEngineeringMaterialBo.push({
+						materialQuality: this.materialValue.id, //材质
+						specifications: this.specificationValue.id, //规格
+						number: this.inputNumberValue //数量
+					})
+				}
+				let param = {
+
+					enginName: this.projectName.name,
+					enginAddre: this.gcdzValue, //工程地址
+					constructUnit: this.jsdwValue, //建设单位
+					startTime: this.kgsjValue, //开工时间
+					plannedDuration: this.jhgqValue, //计划工期
+					completedTime: this.jgsjValue, //竣工时间
+					enginContent: this.gcnrValue, //工程内容 长度100
+					files: this.fileArr, // 文件信息 数组
+					id: this.id, // 基建工程id
+					zEngineeringNodeBo: {
+						type: this.objValue.value,
+						zEngineeringInfoBo: {
+							constructTime: this.time,
+							zEngiineeringPhotoBoList: this.imgArr,
+							zEngineeringMaterialBo: this.zEngineeringMaterialBo
+						}
+					}
+				}
+
+				SubmitInfrastructure(param).then(res => {
+					if (res.code == '200') {
+						uni.showToast({
+							title: res.msg,
+							icon: 'none',
+							//显示持续时间为 3秒
+							duration: 1000
+						});
+						setTimeout(function() {
+							uni.navigateBack();
+						}, 1000)
+
+					}
+				})
+			},
 		}
 	}
 </script>
 
 <style>
-
-.container {
+	.container {
 		display: flex;
 		margin-left: 10px;
 		margin-top: 10px;
@@ -87,28 +847,80 @@
 		line-height: 20px;
 	}
 
-	.uni-list-cell-db,
-	.uni-list-cell {
-		position: relative;
+	page {
+		background: #f2f2f2;
+	}
+
+	.flex-x {
 		display: flex;
-		flex-direction: row;
-		justify-content: space-between;
 		align-items: center;
 	}
 
-	.uni-list-cell-left {
-		white-space: nowrap;
+	.template_title,
+	.template_title1,
+	.template_title_list {
+		height: 90rpx;
+		background: #fff;
+		justify-content: space-between;
+		padding: 0 30rpx;
+		box-sizing: border-box;
+	}
+
+	.template_title1 {
+		background: none;
+	}
+
+	.template_title_list {
+		margin-bottom: 4rpx;
+	}
+
+	.template_title>view,
+	.template_title1>view {
+		font-size: 32rpx;
+		color: #8f8f8f;
+		flex-shrink: 0;
+		margin-right: 20rpx;
+	}
+
+	.template_title>input {
 		font-size: 28rpx;
+		color: #808080;
+		text-align: right;
+		flex-grow: 1;
 	}
 
+	/* 添加内容 */
 
-	.view-bg {
-		margin-left: 8px;
-		margin-right: 8px;
-		margin-top: 8px;
-		padding: 10px;
-		background-color: #fff;
-		border-radius: 5px;
+	.add_con>text {
+		font-size: 40rpx;
+		color: #f16765;
+		display: block;
+		margin-right: 20rpx;
+		margin-left: 10rpx;
+		line-height: 44rpx;
+	}
+
+	.add_con>view {
+		font-size: 32rpx;
+		color: #7885cb;
 	}
 
-</style>
+	/* 删除内容 */
+
+	.del {
+		font-size: 32rpx;
+		color: #f16765;
+		margin-right: 14rpx;
+		padding: 20rpx;
+	}
+
+	input {
+		flex-grow: 1;
+		font-size: 28rpx;
+		color: #808080;
+	}
+
+	.btn {
+		margin-top: 100rpx;
+	}
+</style>

+ 5 - 5
pages/work/index.vue

@@ -38,19 +38,19 @@
 				</uni-grid-item>
 				<uni-grid-item>
 					<view class="grid-item-box" @click="showDangerous">
-						<uni-icons type="settings-filled" size="30" ></uni-icons>
+						<uni-icons type="settings-filled" size="30"></uni-icons>
 						<text class="text">危险作业工程</text>
 					</view>
 				</uni-grid-item>
 				<uni-grid-item>
-					<view class="grid-item-box">
-						<uni-icons type="heart-filled" size="30" @click="showTopPipe"></uni-icons>
+					<view class="grid-item-box" @click="showTopPipe">
+						<uni-icons type="heart-filled" size="30"></uni-icons>
 						<text class="text">顶管工程</text>
 					</view>
 				</uni-grid-item>
 				<uni-grid-item>
-					<view class="grid-item-box">
-						<uni-icons type="bars" size="30" @click="showInfrastructureDialog"></uni-icons>
+					<view class="grid-item-box" @click="showInfrastructureDialog">
+						<uni-icons type="bars" size="30"></uni-icons>
 						<text class="text">基建工程</text>
 					</view>
 				</uni-grid-item>