|
@@ -0,0 +1,906 @@
|
|
|
+<template>
|
|
|
+ <scroll-view>
|
|
|
+ <view class="uni-media-list" v-for="(value, key) in dataJson.zEngineeringNodeBo.zEngineeringInfoBoList"
|
|
|
+ :key="key" v-if="isEdit(value)">
|
|
|
+
|
|
|
+ <view class="uni-media-list-body">
|
|
|
+ <view>
|
|
|
+ <view class="uni-media-list-text-top">
|
|
|
+ <view class="tit-text">施工时间:</view>{{value.updateTime}}
|
|
|
+ </view>
|
|
|
+ <view class="uni-media-list-text-top">
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="tit-text" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px;">施工内容:</text>
|
|
|
+ <view style="width: 100%;box-sizing: border-box;">
|
|
|
+ <textarea class="textarea" maxlength="255" placeholder-style="padding: 10rpx;"
|
|
|
+ style="width: 100%;height: 100%;border: 1rpx solid #cccccc; border-radius: 15rpx;padding: 10rpx;line-height:normal;"
|
|
|
+ auto-height :value="value.remark"
|
|
|
+ @blur="bindTextAreaBlur($event.target.value,key)"></textarea>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+
|
|
|
+ <view class="cz-style" v-for="(a,index) in value.zEngineeringMaterialBo" :key="index">
|
|
|
+ <view class="uni-media-list-text-top" style=" ">
|
|
|
+ <view class="tit-text">材质:</view>
|
|
|
+
|
|
|
+ <view class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('cz',key,index)">
|
|
|
+ <span
|
|
|
+ style="color: black;">{{a.materialQualityName==''?'请选择材质':a.materialQualityName}}</span>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="uni-media-list-text-top" style=" ">
|
|
|
+ <view class="tit-text">规格:</view>
|
|
|
+ <view class="uni-list-cell-db" style="margin-top: 10;" @click="pickerShow('gg',key,index)">
|
|
|
+ <span
|
|
|
+ style="color: black;">{{a.specificationsName==''?'请选择规格':a.specificationsName}}</span>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="uni-media-list-text-top" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
+ <text class="tit-text">米 数</text>
|
|
|
+ <view style="display: flex; justify-content: right; width: 70%;">
|
|
|
+ <input class="uni-input" type="number" :value="getIntegerPart(a.number,0)"
|
|
|
+ @change="setInfoBoNumber(key,index,$event.target.value,0)" maxlength="6"
|
|
|
+ style="text-align: center; border: 1px solid #00aaff; border-radius: 20rpx;"></input>
|
|
|
+ <text style="font-weight:bold;margin-left: 10px;margin-right: 10px;">.</text>
|
|
|
+
|
|
|
+ <input class="uni-input" type="number" :value="getIntegerPart(a.number,1)"
|
|
|
+ @change="setInfoBoNumber(key,index,$event.target.value,1)" maxlength="1"
|
|
|
+ style="text-align: center; border: 1px solid #00aaff; border-radius: 20rpx;"></input>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ <button v-if="index!=0" @click="btnDel(key,index)" class="sc-btn">删除</button>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ <button @click="btnAdd(key,index)" class="tj-btn">添加</button>
|
|
|
+
|
|
|
+ </view>
|
|
|
+
|
|
|
+
|
|
|
+ <view v-if="title=='trench_construction'">
|
|
|
+
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="uni-title uni-common-pl" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px; margin-left: 8px;">焊接照片:</text>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px;">
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose('hj',key)">
|
|
|
+ </image>
|
|
|
+ <view v-for="(item,index) in value.welding" :key="index" style="position: relative;">
|
|
|
+ <view
|
|
|
+ v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' || item.substring(item.length - 3) == 'jpeg'">
|
|
|
+ <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
|
|
|
+ @click="showPhoto(index,value.welding)">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view v-else>
|
|
|
+ <video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
|
|
|
+ </view>
|
|
|
+ <view @click="removeht(index,key,'hj')"
|
|
|
+ style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="uni-title uni-common-pl" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px;margin-left: 8px;">防腐照片:</text>
|
|
|
+ </view>
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px;">
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose('ff',key)">
|
|
|
+ </image>
|
|
|
+ <view v-for="(item,index) in value.aczoiling" :key="index" style="position: relative;">
|
|
|
+ <view
|
|
|
+ v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' || item.substring(item.length - 3) == 'jpeg'">
|
|
|
+ <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
|
|
|
+ @click="showPhoto(index,value.aczoiling)">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view v-else>
|
|
|
+ <video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
|
|
|
+ </view>
|
|
|
+ <view @click="removeht(index,key,'ff')"
|
|
|
+ style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+
|
|
|
+ </view>
|
|
|
+ <view v-if="title=='underditch_construction'">
|
|
|
+
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="uni-title uni-common-pl" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px; margin-left: 8px;">管道下沟照片:</text>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px;">
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose('gdxg',key)">
|
|
|
+ </image>
|
|
|
+ <view v-for="(item,index) in value.piping" :key="index" style="position: relative;">
|
|
|
+ <view
|
|
|
+ v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' || item.substring(item.length - 3) == 'jpeg'">
|
|
|
+ <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
|
|
|
+ @click="showPhoto(index,value.piping)">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view v-else>
|
|
|
+ <video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
|
|
|
+ </view>
|
|
|
+ <view @click="removeht(index,key,'gdxg')"
|
|
|
+ style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="uni-title uni-common-pl" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px;margin-left: 8px;">警示带铺设照片:</text>
|
|
|
+ </view>
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px;">
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose('jsdps',key)">
|
|
|
+ </image>
|
|
|
+ <view v-for="(item,index) in value.warning" :key="index" style="position: relative;">
|
|
|
+ <view
|
|
|
+ v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' || item.substring(item.length - 3) == 'jpeg'">
|
|
|
+ <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
|
|
|
+ @click="showPhoto(index,value.warning)">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view v-else>
|
|
|
+ <video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
|
|
|
+ </view>
|
|
|
+ <view @click="removeht(index,key,'jsdps')"
|
|
|
+ style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
+ <text class="uni-title uni-common-pl" style=" font-size: 13px;color:
|
|
|
+ #000;margin-top: 5px;margin-left: 8px;">回填照片:</text>
|
|
|
+ </view>
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px;">
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose('ht',key)">
|
|
|
+ </image>
|
|
|
+ <view v-for="(item,index) in value.backfilling" :key="index" style="position: relative;">
|
|
|
+ <view
|
|
|
+ v-if="item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' || item.substring(item.length - 3) == 'jpeg'">
|
|
|
+ <image :src="item" mode="" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"
|
|
|
+ @click="showPhoto(index,value.backfilling)">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ <view v-else>
|
|
|
+ <video :src="item" style="width: 100rpx; height: 100rpx; margin: 0 12rpx;"></video>
|
|
|
+ </view>
|
|
|
+ <view @click="removeht(index,key,'ht')"
|
|
|
+ style="position: absolute; top: 0; right: 14rpx; border-radius: 50%;">
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
+ </image>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+ </view>
|
|
|
+
|
|
|
+ <SelectPicker :list="selectList" @change="changeSelect" v-if="open" @close="close" titleKey="name"
|
|
|
+ subtitleKey="id">
|
|
|
+ </SelectPicker>
|
|
|
+ <SelectPicker :list="dictOptions" @change="changeSelectDict" v-if="openDict" @close="closeDict"
|
|
|
+ titleKey="dictLabel" subtitleKey="dictValue" v-model="name"></SelectPicker>
|
|
|
+ <view class="action-btn" v-if="hideButton==false">
|
|
|
+ <button @click="submit" class="btn cu-btn block bg-blue lg round">确认</button>
|
|
|
+ </view>
|
|
|
+ </scroll-view>
|
|
|
+</template>
|
|
|
+
|
|
|
+<script>
|
|
|
+ import SelectPicker from '../../components/selectPicker/select_picker.vue'
|
|
|
+ import {
|
|
|
+ getDicts
|
|
|
+ } from "@/api/system/dict/data";
|
|
|
+ import {
|
|
|
+ getToken
|
|
|
+ } from '../../utils/auth';
|
|
|
+ import user from '@/store/modules/user'
|
|
|
+ import {
|
|
|
+ getHistoryMunicipalDetails,
|
|
|
+ getEnginMaterialQualityList,
|
|
|
+ Putengineering,
|
|
|
+ getEnginSpecificationsList
|
|
|
+ } from '@/api/common'
|
|
|
+ export default {
|
|
|
+ components: {
|
|
|
+ SelectPicker,
|
|
|
+ },
|
|
|
+ data() {
|
|
|
+ return {
|
|
|
+ // playVideo: false,//视频播放放大
|
|
|
+ // playVideoSrc:'',
|
|
|
+ selectZbfList: [],
|
|
|
+ dictOptions: [],
|
|
|
+ openDict: false,
|
|
|
+ dataIndex: 0, //数据用第几条
|
|
|
+ selectIndex: 0, //材质规格用的第几条
|
|
|
+ imageIndex: 0,
|
|
|
+ headers: {
|
|
|
+ Authorization: "Bearer " + getToken()
|
|
|
+ },
|
|
|
+ nodeId: '',
|
|
|
+ type: '',
|
|
|
+ title: '',
|
|
|
+ dataJson: '',
|
|
|
+ enginClassification: '',
|
|
|
+ enginType: '',
|
|
|
+ enginClassValue: '',
|
|
|
+ selectList: [],
|
|
|
+ open: false,
|
|
|
+ selectType: '',
|
|
|
+ hideButton: false,
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onLoad(options) {
|
|
|
+ if ('params' in options) {
|
|
|
+ let e = JSON.parse(decodeURIComponent(options.params));
|
|
|
+ this.nodeId = e.id;
|
|
|
+ this.type = e.type=='沟上施工'?'trench_construction':'underditch_construction';
|
|
|
+ getHistoryMunicipalDetails(this.nodeId, this.type).then(response => {
|
|
|
+ if (response.data.zEngineeringNodeBo != null) {
|
|
|
+ this.hideButton = false;
|
|
|
+ this.dataJson = response.data;
|
|
|
+ this.title = response.data.zEngineeringNodeBo.type;
|
|
|
+ this.enginType = response.data.enginType;
|
|
|
+ this.enginClassification = response.data.enginClassification;
|
|
|
+
|
|
|
+ } else {
|
|
|
+ this.hideButton = true;
|
|
|
+ this.$modal.msg("暂无历史信息")
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ }
|
|
|
+ },
|
|
|
+ methods: {
|
|
|
+ //关闭弹窗
|
|
|
+ close(e) {
|
|
|
+ this.open = false
|
|
|
+ },
|
|
|
+ btnAdd(key, index) {
|
|
|
+
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].zEngineeringMaterialBo.push({
|
|
|
+
|
|
|
+ 'materialQuality': '',
|
|
|
+ 'materialQualityName': '',
|
|
|
+ 'number': '',
|
|
|
+ 'specifications': '',
|
|
|
+ 'specificationsName': ''
|
|
|
+
|
|
|
+ });
|
|
|
+ },
|
|
|
+ btnDel(key, index) {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].zEngineeringMaterialBo.splice(index, 1);
|
|
|
+ },
|
|
|
+ pickerShow(e, index, indexTwo) {
|
|
|
+ this.dataIndex = index;
|
|
|
+ this.selectIndex = indexTwo; //材质规格 第几条
|
|
|
+ this.selectType = e;
|
|
|
+ if (e == 'cz') {
|
|
|
+ this.open = true;
|
|
|
+ getEnginMaterialQualityList("市政工程").then(response => {
|
|
|
+ this.selectList = response.data;
|
|
|
+ });
|
|
|
+ }
|
|
|
+ if (e == 'gg') {
|
|
|
+ if (this.isEmpty(this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex]
|
|
|
+ .zEngineeringMaterialBo[this.selectIndex].materialQuality)) {
|
|
|
+ this.$modal.msg('请选择材质')
|
|
|
+ } else {
|
|
|
+ this.open = true;
|
|
|
+ getEnginSpecificationsList(this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex]
|
|
|
+ .zEngineeringMaterialBo[this.selectIndex].materialQuality).then(res => {
|
|
|
+ this.selectList = res.data
|
|
|
+ })
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ changeSelect(item, index) {
|
|
|
+ this.open = false;
|
|
|
+ if (this.selectType == 'cz') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .materialQuality = item.id;
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .materialQualityName = item.name;
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .specifications = '';
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .specificationsName = '';
|
|
|
+
|
|
|
+
|
|
|
+ } else if (this.selectType == 'gg') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .specifications = item.id;
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[this.dataIndex].zEngineeringMaterialBo[this
|
|
|
+ .selectIndex]
|
|
|
+ .specificationsName = item.name;
|
|
|
+ }
|
|
|
+ },
|
|
|
+ // 截取小数点前的字符串
|
|
|
+ getIntegerPart(numStr, i) {
|
|
|
+ return numStr.toString().split('.')[i] == undefined ? '0' : numStr.toString().split('.')[i];
|
|
|
+ },
|
|
|
+ setInfoBoNumber(key, index, number, i) {
|
|
|
+ let Ynumber = this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].zEngineeringMaterialBo[index]
|
|
|
+ .number;
|
|
|
+ let resAry = Ynumber.toString().split('.');
|
|
|
+ resAry[i] = number
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].zEngineeringMaterialBo[index].number = resAry
|
|
|
+ .join('.');
|
|
|
+ },
|
|
|
+ bindTextAreaBlur(e, index) {
|
|
|
+
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[index].remark = e;
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+ removeht(index, key, type) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '是否删除该图片或视频?',
|
|
|
+ success: (res) => {
|
|
|
+ if (res.confirm) {
|
|
|
+
|
|
|
+ if (type == 'hj') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].welding
|
|
|
+ .splice(index, 1)
|
|
|
+
|
|
|
+ } else if (type == 'ff') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].aczoiling
|
|
|
+ .splice(index, 1)
|
|
|
+
|
|
|
+ } else if (type == 'gdxg') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key].piping
|
|
|
+ .splice(index, 1)
|
|
|
+
|
|
|
+ } else if (type == 'jsdps') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key]
|
|
|
+ .warning
|
|
|
+ .splice(index, 1)
|
|
|
+ } else if (type == 'ht') {
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList[key]
|
|
|
+ .backfilling
|
|
|
+ .splice(index, 1)
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ remove(index, key) {
|
|
|
+ uni.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '是否删除该图片或视频?',
|
|
|
+ success: (res) => {
|
|
|
+ if (res.confirm) {
|
|
|
+
|
|
|
+ this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[key]
|
|
|
+ .zEngiineeringPhotoBoList.splice(index, 1)
|
|
|
+
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ choose(type, index) {
|
|
|
+ this.dataIndex = index;
|
|
|
+ let _this = this;
|
|
|
+ uni.showActionSheet({
|
|
|
+ title: '上传',
|
|
|
+ itemList: ['图片', '视频'],
|
|
|
+ success: (res) => {
|
|
|
+ if (res.tapIndex == 0) {
|
|
|
+ this.chooseimage(type)
|
|
|
+ } else {
|
|
|
+ this.choosevideo(type)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ chooseimage(e) {
|
|
|
+
|
|
|
+ let _this = this;
|
|
|
+ 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 => {
|
|
|
+ let data = JSON.parse(res.data);
|
|
|
+ if (![200].includes(data.code)) {
|
|
|
+ _this.$modal.msg(data.msg)
|
|
|
+ } else {
|
|
|
+ if (_this.progress === 100) {
|
|
|
+ if (e == 'hj') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .welding.push(data.data
|
|
|
+ .url);
|
|
|
+ } else if (e == 'ff') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .aczoiling.push(data.data
|
|
|
+ .url);
|
|
|
+ } else if (e == 'gdxg') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .piping.push(data.data
|
|
|
+ .url);
|
|
|
+ } else if (e == 'jsdps') {
|
|
|
+
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .warning.push(data.data
|
|
|
+ .url);
|
|
|
+ } else if (e == 'ht') {
|
|
|
+
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .backfilling.push(data.data
|
|
|
+ .url);
|
|
|
+ }
|
|
|
+
|
|
|
+ _this.$modal.msg('上传成功!')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: e => {
|
|
|
+ _this.$modal.msg('上传失败!')
|
|
|
+ },
|
|
|
+ complete: res => {
|
|
|
+ uni.hideLoading();
|
|
|
+ _this.uploading = false;
|
|
|
+
|
|
|
+ }
|
|
|
+ });
|
|
|
+ task.onProgressUpdate(res => {
|
|
|
+ _this.progress = res.progress;
|
|
|
+ uni.showLoading({
|
|
|
+ title: '上传中'
|
|
|
+ })
|
|
|
+ if (_this.progress != 100) {
|
|
|
+ _this.loading = false
|
|
|
+ } else {
|
|
|
+ _this.loading = true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ })
|
|
|
+ },
|
|
|
+
|
|
|
+ choosevideo(e) {
|
|
|
+ let _this = this;
|
|
|
+ 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 => {
|
|
|
+ let data = JSON.parse(res.data);
|
|
|
+ if (![200].includes(res.statusCode)) {
|
|
|
+ this.uploadError(index, data);
|
|
|
+ } else {
|
|
|
+ //上传成功
|
|
|
+ if (_this.progress === 100) {
|
|
|
+ if (e == 'hj') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .welding.push(data.data.url);
|
|
|
+
|
|
|
+ } else if (e == 'ff') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .aczoiling.push(data.data.url);
|
|
|
+ } else if (e == 'gdxg') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .piping.push(data.data.url);
|
|
|
+ } else if (e == 'jsdps') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .warning.push(data.data.url);
|
|
|
+ } else if (e == 'ht') {
|
|
|
+ _this.dataJson.zEngineeringNodeBo
|
|
|
+ .zEngineeringInfoBoList[_this.dataIndex]
|
|
|
+ .backfilling.push(data.data.url);
|
|
|
+ }
|
|
|
+ _this.$modal.msg('上传成功!')
|
|
|
+ }
|
|
|
+ }
|
|
|
+ },
|
|
|
+ fail: e => {
|
|
|
+ _this.$modal.msg('上传失败!')
|
|
|
+ this.uploadError(index, e);
|
|
|
+ },
|
|
|
+ complete: res => {
|
|
|
+ uni.hideLoading();
|
|
|
+ _this.uploading = false;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ task.onProgressUpdate(res => {
|
|
|
+ _this.progress = res.progress;
|
|
|
+ uni.showLoading({
|
|
|
+ title: '上传中'
|
|
|
+ })
|
|
|
+ if (_this.progress != 100) {
|
|
|
+ _this.loading = false
|
|
|
+ } else {
|
|
|
+ _this.loading = true
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
+ })
|
|
|
+ },
|
|
|
+ showPhoto(index, arr) {
|
|
|
+
|
|
|
+ let newArr = [];
|
|
|
+ arr.forEach((item, index) => {
|
|
|
+ if (item.substring(item.length - 3) == 'png' || item.substring(item.length - 3) == 'jpg' ||
|
|
|
+ item.substring(item.length - 4) == 'jpeg') {
|
|
|
+ newArr.push(item)
|
|
|
+ }
|
|
|
+ });
|
|
|
+
|
|
|
+ uni.previewImage({
|
|
|
+ current: index,
|
|
|
+ urls: newArr,
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ // showVideo(arr) {
|
|
|
+ // this.playVideo = true;
|
|
|
+ // this.playVideoSrc = arr;
|
|
|
+ // },
|
|
|
+ // closeVideo(){
|
|
|
+ // this.playVideo = false;
|
|
|
+ // },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ isEmpty(str) {
|
|
|
+
|
|
|
+ return (!str || 0 === str.length);
|
|
|
+
|
|
|
+ },
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
+ isEdit(item) {
|
|
|
+ var isShow = item.createBy == this.$user.state.name;
|
|
|
+
|
|
|
+ return isShow;
|
|
|
+ },
|
|
|
+ submit() {
|
|
|
+ let isSubmit = true;
|
|
|
+
|
|
|
+
|
|
|
+ this.dataJson.zEngineeringNodeBo.zEngineeringInfoBoList.forEach((res) => {
|
|
|
+
|
|
|
+ res.zEngineeringMaterialBo.forEach((itme) => {
|
|
|
+ if (itme.specifications == '') {
|
|
|
+ this.$modal.msg("请选择规格");
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ if (itme.number == '') {
|
|
|
+ this.$modal.msg("请输入米数");
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ if (this.getIntegerPart(itme.number, 0) == '') {
|
|
|
+ this.$modal.msg("请输入米数");
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+ if (this.title == 'trench_construction') {
|
|
|
+ //沟上施工
|
|
|
+ if (res.welding.length <= 0) {
|
|
|
+ this.$modal.msg('请上传焊接照片')
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ if (res.aczoiling.length <= 0) {
|
|
|
+ this.$modal.msg('请上传防腐照片')
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ } else if (this.title == 'underditch_construction') {
|
|
|
+ //沟下施工
|
|
|
+ if (res.piping.length <= 0) {
|
|
|
+ this.$modal.msg('请上传管道下沟照片')
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ if (res.warning.length <= 0) {
|
|
|
+ this.$modal.msg('请上传警示带铺设照片')
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ if (res.backfilling.length <= 0) {
|
|
|
+ this.$modal.msg('请上传回填照片')
|
|
|
+ isSubmit = false;
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ if (!isSubmit) {
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ Putengineering(this.dataJson).then(
|
|
|
+
|
|
|
+ response => {
|
|
|
+ if (response.code == '200') {
|
|
|
+ uni.hideLoading()
|
|
|
+ uni.showToast({
|
|
|
+ title: response.msg,
|
|
|
+ icon: 'none',
|
|
|
+ duration: 2000
|
|
|
+ });
|
|
|
+ setTimeout(function() {
|
|
|
+ uni.navigateBack();
|
|
|
+ }, 1000)
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+</script>
|
|
|
+
|
|
|
+<style lang="scss">
|
|
|
+ .uni-media-list-body {
|
|
|
+ background: #fff;
|
|
|
+ border: 1px solid #eee;
|
|
|
+ border-radius: 40rpx;
|
|
|
+ margin: 20rpx;
|
|
|
+ padding: 10rpx 0 40rpx;
|
|
|
+ box-shadow: 0 0 5px #eee;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-media-list-text-top {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 10px;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ .to-right-icon {
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ }
|
|
|
+
|
|
|
+ .share {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .tit-text {
|
|
|
+ color: #4f535a;
|
|
|
+ margin-right: 20rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ .normal-text {}
|
|
|
+
|
|
|
+ .cz-style {
|
|
|
+ background: #e8f4f9;
|
|
|
+ margin: 20rpx;
|
|
|
+ padding: 10rpx;
|
|
|
+ border-radius: 20rpx;
|
|
|
+ border: 1px solid #d4e3f0;
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-media-list-text-top {
|
|
|
+ font-size: 14px;
|
|
|
+ color: #696969;
|
|
|
+ padding: 20rpx 20rpx;
|
|
|
+ border-bottom: 1px solid #eee;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ }
|
|
|
+
|
|
|
+ .share-box {
|
|
|
+ width: 100%;
|
|
|
+ height: 100%;
|
|
|
+ position: fixed;
|
|
|
+ top: 0rpx;
|
|
|
+ left: 0rpx;
|
|
|
+ bottom: 0rpx;
|
|
|
+ right: 0rpx;
|
|
|
+ background-color: rgba(0, 0, 0, 0.4);
|
|
|
+ transition: .3s;
|
|
|
+ z-index: 999;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 进入分享动画
|
|
|
+ .share-show {
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ transform: translateY(0%) !important;
|
|
|
+ border-radius: 20px 20px 0px 0px;
|
|
|
+ }
|
|
|
+
|
|
|
+ .scroll-Y {
|
|
|
+ height: 58vh;
|
|
|
+ }
|
|
|
+
|
|
|
+ // 离开分享动画
|
|
|
+ .share-item {
|
|
|
+ position: fixed;
|
|
|
+ left: 0;
|
|
|
+ bottom: 0;
|
|
|
+ width: 100%;
|
|
|
+ height: 70%;
|
|
|
+ background-color: #FFFFFF;
|
|
|
+ transition: all 0.3s ease;
|
|
|
+ transform: translateY(100%);
|
|
|
+ z-index: 1999;
|
|
|
+
|
|
|
+ .share-to {
|
|
|
+ width: 100%;
|
|
|
+ height: 30px;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ margin: 30rpx 0;
|
|
|
+ align-items: center;
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .content {
|
|
|
+ width: 100%;
|
|
|
+ height: auto;
|
|
|
+ display: flex;
|
|
|
+ flex-wrap: wrap;
|
|
|
+
|
|
|
+ .block {
|
|
|
+ width: 100%;
|
|
|
+ display: flex;
|
|
|
+ flex-direction: column;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: left;
|
|
|
+ height: auto;
|
|
|
+
|
|
|
+ image {
|
|
|
+ width: 80rpx;
|
|
|
+ height: 80rpx;
|
|
|
+ }
|
|
|
+
|
|
|
+ text {
|
|
|
+ margin-top: 16rpx;
|
|
|
+ font-size: 28rpx;
|
|
|
+ color: #606266;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ .cancel {
|
|
|
+ width: 100%;
|
|
|
+ height: 3rem;
|
|
|
+ display: flex;
|
|
|
+ justify-content: center;
|
|
|
+ align-items: center;
|
|
|
+ border-top: 1rpx solid #E4E7ED;
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-media-list-text-top {
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: space-between;
|
|
|
+ padding: 10px;
|
|
|
+ position: relative;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .uni-list {
|
|
|
+ border: 1xp solid #eee;
|
|
|
+ }
|
|
|
+
|
|
|
+ .to-right-icon {
|
|
|
+ width: 15px;
|
|
|
+ height: 15px;
|
|
|
+ position: absolute;
|
|
|
+ top: 50%;
|
|
|
+ transform: translateY(-50%);
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ .text {
|
|
|
+ font-size: 16px;
|
|
|
+ color: #333;
|
|
|
+ }
|
|
|
+
|
|
|
+ .tj-btn {
|
|
|
+ height: 69rpx;
|
|
|
+ background: #3184f0;
|
|
|
+ border-radius: 6rpx;
|
|
|
+ font-size: 25rpx;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #FFFFFF;
|
|
|
+ line-height: 69rpx;
|
|
|
+ margin: 40rpx 70rpx;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ .sc-btn {
|
|
|
+ height: 69rpx;
|
|
|
+ background: #f0686b;
|
|
|
+ border-radius: 6rpx;
|
|
|
+ font-size: 25rpx;
|
|
|
+ font-weight: 400;
|
|
|
+ color: #FFFFFF;
|
|
|
+ line-height: 69rpx;
|
|
|
+ margin: 40rpx;
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ // .gesture-area {
|
|
|
+ // //加浮动弹窗
|
|
|
+ // width: 100%;
|
|
|
+ // height: 100%;
|
|
|
+ // }
|
|
|
+</style>
|