|
@@ -0,0 +1,978 @@
|
|
|
|
+ <template>
|
|
|
|
+ <scroll-view>
|
|
|
|
+ <view class="background">
|
|
|
|
+ <!-- <view class="uni-list">
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+ <view>
|
|
|
|
+ 工程周期
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.projectValue.dictValue)" @click="pickerShow('gczq')">
|
|
|
|
+ <span style="color: darkgray;">请选择工程周期</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('gczq')">
|
|
|
|
+ <span style="color: black;">{{projectValue.dictLabel}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view> -->
|
|
|
|
+ <view class="uni-list">
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+ <view>
|
|
|
|
+ 行政区
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.XZQValue.dictValue)" @click="pickerShow('xzq')">
|
|
|
|
+ <span style="color: darkgray;">请选择行政区</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('xzq')">
|
|
|
|
+ <span style="color: black;">{{XZQValue.dictLabel}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="uni-list">
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+ <view>
|
|
|
|
+ 小区
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view v-if="this.isEmpty(this.XQValue.id)" class="uni-list-cell-db" @click="pickerShow('xq')">
|
|
|
|
+ <span style="color: darkgray;">请选择小区</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('xq')">
|
|
|
|
+ <span style="color: black;">{{XQValue.name}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="uni-list">
|
|
|
|
+ <view class="container">
|
|
|
|
+ <view class="uni-list-cell-left">
|
|
|
|
+ 楼栋
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.LDValue.id)" class="uni-list-cell-db" @click="pickerShow('ld')">
|
|
|
|
+ <span style="color: darkgray;">请选择楼栋</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('ld')">
|
|
|
|
+ <span style="color: black;">{{LDValue.name}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </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="background">
|
|
|
|
+ <view>
|
|
|
|
+ <view class="uni-list">
|
|
|
|
+ <view
|
|
|
|
+ style="font-size: 16px;margin-left: 10px;margin-top: 10px;display: flex; justify-content: space-between;margin-bottom: 10px;">
|
|
|
|
+ {{objValue.enginClassValue}}
|
|
|
|
+
|
|
|
|
+ <span
|
|
|
|
+ style="color: blue;font-size: 14px; display: flex;justify-content:flex-end; margin-right: 10px;"
|
|
|
|
+ @click="history">历史</span>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+
|
|
|
|
+ <view>
|
|
|
|
+ 施工时间
|
|
|
|
+ </view>
|
|
|
|
+ <view @click="openDatetimePicker('sg')">
|
|
|
|
+ <span style="color: black;">{{time}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="container" v-if="objValue.enginClassValue=='回填'">
|
|
|
|
+
|
|
|
|
+ <view>
|
|
|
|
+ 回填时间
|
|
|
|
+ </view>
|
|
|
|
+ <view @click="openDatetimePicker('ht')">
|
|
|
|
+ <span style="color: black;">{{BackfillingTime ? BackfillingTime:'请选择回填时间'}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="container" v-else-if="objValue.enginClassValue=='打压'">
|
|
|
|
+
|
|
|
|
+ <view>
|
|
|
|
+ 分段打压是否合格
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.isOkValue)" @click="showActionsheet()">
|
|
|
|
+ <span style="color: darkgray;">请选择分段打压是否合格</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="showActionsheet()">
|
|
|
|
+ <span style="color: black;">{{isOkLabel}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+ <view class="uni-common-mt" style="width: 100%;">
|
|
|
|
+ <text class="uni-title uni-common-pl">施工内容</text>
|
|
|
|
+ <view style="width: 100%;box-sizing: border-box;">
|
|
|
|
+ <textarea class="textarea" placeholder="请输入施工内容" 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 v-model="projectContent"></textarea>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+
|
|
|
|
+ <view>
|
|
|
|
+ 材 质
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.materialValue.id)" @click="pickerShow('cz')">
|
|
|
|
+ <span style="color: darkgray;">请选择材质</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('cz')">
|
|
|
|
+ <span style="color: black;">{{materialValue.name}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+
|
|
|
|
+ <view>
|
|
|
|
+ 规 格
|
|
|
|
+ </view>
|
|
|
|
+ <view v-if="this.isEmpty(this.specificationValue.id)" @click="pickerShow('gg')">
|
|
|
|
+ <span style="color: darkgray;">请选择规格</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ <view v-else class="uni-list-cell-db" @click="pickerShow('gg')">
|
|
|
|
+ <span style="color: black;">{{specificationValue.name}}</span>
|
|
|
|
+ <image :src="loadImgSrc('icon_right.png')" class="to-right-icon"></image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="container" style="border-bottom: 1px solid #f8f8f8;">
|
|
|
|
+
|
|
|
|
+ <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 class="align-items" style="margin-top: 20px;margin-bottom: 20px;">
|
|
|
|
+ <view class="container" style="color: #b2b2b2;">*请上传照片</view>
|
|
|
|
+ <view class="" style="display: flex; flex-wrap: wrap;margin-top: 10px; margin-left: 10px;">
|
|
|
|
+ <image :src="loadImgSrc('updateimg.png')" mode=""
|
|
|
|
+ style="width: 200rpx; height: 150rpx; margin: 0 12rpx;; " @click="choose()"
|
|
|
|
+ v-show="reviewStatus!='1'"></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'||item.substring(item.length-4)=='jpeg' ">
|
|
|
|
+ <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%;">
|
|
|
|
+ <image :src="loadImgSrc('icon_close.png')" style=" width: 15px; height: 15px;">
|
|
|
|
+ </image>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ </view>
|
|
|
|
+ <view class="action-btn" v-show="reviewStatus!='1'">
|
|
|
|
+ <button @click="submit" class="btn cu-btn block bg-blue lg round">确认上传</button>
|
|
|
|
+ </view>
|
|
|
|
+
|
|
|
|
+ <bottom-sheet ref="refShare" :data="historyList"></bottom-sheet>
|
|
|
|
+ <yt-dateTimePicker ref="myPicker" @submit="handleSubmit" :start-year="2024" :end-year="2099"
|
|
|
|
+ :time-hide="[true, true, true, true, true, true]" :time-label="['年', '月', '日', '时', '分', '秒']" />
|
|
|
|
+ </scroll-view>
|
|
|
|
+ </template>
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ <script>
|
|
|
|
+ import SelectPicker from '../../../components/selectPicker/select_picker.vue'
|
|
|
|
+ import bottomSheet from '../../../components/bottomSheet/bottomSheet.vue'
|
|
|
|
+
|
|
|
|
+ import {
|
|
|
|
+ getDicts
|
|
|
|
+ } from "@/api/system/dict/data";
|
|
|
|
+ import {
|
|
|
|
+ getAreaList,
|
|
|
|
+ getBuildingList,
|
|
|
|
+ addTearOldPipe,
|
|
|
|
+ getEnginMaterialQualityList,
|
|
|
|
+ getEnginSpecificationsList,
|
|
|
|
+ getRoomProjectList,
|
|
|
|
+ getRoomProjectId,
|
|
|
|
+ } from '@/api/common'
|
|
|
|
+ import {
|
|
|
|
+ getToken
|
|
|
|
+ } from '../../../utils/auth';
|
|
|
|
+
|
|
|
|
+ export default {
|
|
|
|
+ components: {
|
|
|
|
+ SelectPicker,
|
|
|
|
+ bottomSheet,
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ data() {
|
|
|
|
+
|
|
|
|
+ return {
|
|
|
|
+ headers: {
|
|
|
|
+ Authorization: "Bearer " + getToken()
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ type: '',
|
|
|
|
+ reviewStatus: '', //是否可以点击
|
|
|
|
+ open: false,
|
|
|
|
+ objValue: '', //上一页面传过来的值 新增接口用
|
|
|
|
+ openDict: false,
|
|
|
|
+ selectList: [],
|
|
|
|
+ dictOptions: [],
|
|
|
|
+ imgArr: [],
|
|
|
|
+ XQValue: {},
|
|
|
|
+ XZQValue: {},
|
|
|
|
+ projectValue: {'dictValue':'1'},
|
|
|
|
+ LevelValue: {},
|
|
|
|
+ isOkValue: '', //分段打压是否合格
|
|
|
|
+ isOkLabel: '', //分段打压是否合格label
|
|
|
|
+ LDValue: {},
|
|
|
|
+ time: '', //施工时间
|
|
|
|
+ timeType: '', //时间类型
|
|
|
|
+ BackfillingTime: '', //回填时间
|
|
|
|
+ showTime: false,
|
|
|
|
+ specificationValue: {}, //规格
|
|
|
|
+ projectContent: '', //施工内容
|
|
|
|
+ materialValue: {}, //材质
|
|
|
|
+ brandValue: {}, //品牌
|
|
|
|
+ doorValue: {}, //上门类型
|
|
|
|
+ SelfClosValve: {}, //自闭阀类型
|
|
|
|
+ materialList: '', //材质list
|
|
|
|
+ XQList: '',
|
|
|
|
+ LDList: '',
|
|
|
|
+ progress: 0, //上传图片进度百分比
|
|
|
|
+ loading: false,
|
|
|
|
+ inputNumberValue: '',
|
|
|
|
+ title: '',
|
|
|
|
+ historyList: {} //历史数据
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ created() {
|
|
|
|
+ this.time = this.traversalTime(new Date().getTime()) //在data里定义变量-nowTime
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ onLoad(options) {
|
|
|
|
+ if ('params' in options) {
|
|
|
|
+ this.objValue = JSON.parse(decodeURIComponent(options.params));
|
|
|
|
+ if (this.objValue.enginType == `old_renovation`) {
|
|
|
|
+ this.title = '旧改工程-庭院'
|
|
|
|
+
|
|
|
|
+ } else if (this.objValue.enginType == `new_built`) {
|
|
|
|
+ this.title = '新建工程-庭院'
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ uni.setNavigationBarTitle({
|
|
|
|
+ title: this.title
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ methods: {
|
|
|
|
+
|
|
|
|
+ // 打开picker
|
|
|
|
+ openDatetimePicker(type) {
|
|
|
|
+ this.timeType = type;
|
|
|
|
+ this.$refs.myPicker.show();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 关闭picker
|
|
|
|
+ closeDatetimePicker() {
|
|
|
|
+ this.$refs.myPicker.hide();
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ handleSubmit(e) {
|
|
|
|
+ if (this.timeType == 'ht') {
|
|
|
|
+ this.BackfillingTime = `${e.year}-${e.month}-${e.day} ${e.hour}:${e.minute}:${e.second}`;
|
|
|
|
+ } else {
|
|
|
|
+ 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
|
|
|
|
+ },
|
|
|
|
+ //判断是否选择
|
|
|
|
+
|
|
|
|
+ isEmpty(str) {
|
|
|
|
+
|
|
|
|
+ return (!str || 0 === str.length);
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ // 显示历史弹窗
|
|
|
|
+ handleShowSheet() {
|
|
|
|
+ this.shareState = true;
|
|
|
|
+ },
|
|
|
|
+ // 隐藏历史弹窗
|
|
|
|
+ handleHiddenShare() {
|
|
|
|
+ this.shareState = false;
|
|
|
|
+ },
|
|
|
|
+ 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)
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+ showActionsheet() {
|
|
|
|
+ //分段打压是否合格
|
|
|
|
+
|
|
|
|
+ getDicts("sys_yes_no").then(response => {
|
|
|
|
+
|
|
|
|
+ this.dictOptions = response.data;
|
|
|
|
+ let array = [];
|
|
|
|
+ this.dictOptions.forEach((item, index) => {
|
|
|
|
+ array.push(item.dictLabel)
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ uni.showActionSheet({
|
|
|
|
+ itemList: array,
|
|
|
|
+ success: (res) => {
|
|
|
|
+ // console.log('选择了第' + (res.tapIndex + 1) + '个选项');
|
|
|
|
+ // console.log(this.dictOptions[res.tapIndex].dictValue)
|
|
|
|
+ this.isOkValue = this.dictOptions[res.tapIndex].dictValue;
|
|
|
|
+ this.isOkLabel = this.dictOptions[res.tapIndex].dictLabel;
|
|
|
|
+ },
|
|
|
|
+ fail: (err) => {
|
|
|
|
+ console.log('弹窗取消');
|
|
|
|
+ }
|
|
|
|
+ });
|
|
|
|
+
|
|
|
|
+ });
|
|
|
|
+ },
|
|
|
|
+ pickerShow(e) {
|
|
|
|
+ this.type = e; //赋值类型
|
|
|
|
+ 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;
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else if (e == 'gczq') { //工程周期
|
|
|
|
+ this.openDict = true;
|
|
|
|
+ getDicts("engin_cycle").then(response => {
|
|
|
|
+ this.dictOptions = response.data;
|
|
|
|
+ });
|
|
|
|
+ } else if (e == 'xzq') { //行政区
|
|
|
|
+ if (this.isEmpty(this.projectValue.dictValue)) {
|
|
|
|
+ this.$modal.msg('请选择工程周期')
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.openDict = true;
|
|
|
|
+ getDicts("district").then(response => {
|
|
|
|
+ this.dictOptions = response.data;
|
|
|
|
+ });
|
|
|
|
+ }
|
|
|
|
+ //this.selectList = this.dictOptions;
|
|
|
|
+
|
|
|
|
+ } else if (e == 'xq') { //小区
|
|
|
|
+ if (this.isEmpty(this.XZQValue.dictValue)) {
|
|
|
|
+ this.$modal.msg('请选择行政区')
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.open = true;
|
|
|
|
+ this.selectList = this.XQList;
|
|
|
|
+ }
|
|
|
|
+ } else if (e == 'ld') { //楼栋
|
|
|
|
+
|
|
|
|
+ if (this.isEmpty(this.XQValue.id)) {
|
|
|
|
+ this.$modal.msg('请选择小区')
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.open = true;
|
|
|
|
+ this.selectList = this.LDList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ changeSelectDict(item, index) {
|
|
|
|
+ this.openDict = false;
|
|
|
|
+ if (this.type == 'isok') {
|
|
|
|
+ this.isOkValue = item
|
|
|
|
+
|
|
|
|
+ } else if (this.type == 'gczq') {
|
|
|
|
+ this.projectValue = item
|
|
|
|
+ if (!this.isEmpty(this.XQValue.id)) {
|
|
|
|
+
|
|
|
|
+ //房间选完 判断 工程周期 工程周期切换
|
|
|
|
+ this.getStatus();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else if (this.type == 'xzq') {
|
|
|
|
+ this.XZQValue = item;
|
|
|
|
+
|
|
|
|
+ //根据行政区id获取小区数据
|
|
|
|
+ this.XQValue = ''; //重置小区数据
|
|
|
|
+ this.LDValue = ''; //重置楼栋数据
|
|
|
|
+
|
|
|
|
+ getAreaList(item.dictValue).then(res => {
|
|
|
|
+ this.XQList = res.data;
|
|
|
|
+ })
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ changeSelect(item, index) {
|
|
|
|
+ // this.index = index;
|
|
|
|
+ // this.address = item.communityName;
|
|
|
|
+ this.open = false;
|
|
|
|
+
|
|
|
|
+ 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;
|
|
|
|
+
|
|
|
|
+ } else if (this.type == 'xq') {
|
|
|
|
+ this.XQValue = item;
|
|
|
|
+ if (!this.isEmpty(this.projectValue.dictValue)) {
|
|
|
|
+
|
|
|
|
+ //小区选完 判断 工程周期
|
|
|
|
+ this.getStatus();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ //根据小区id 获取楼栋数据
|
|
|
|
+ this.LDValue = ''; //重置楼栋数据
|
|
|
|
+ this.DYValue = ''; //重置单元数据
|
|
|
|
+ this.FJValue = ''; //重置房间数据
|
|
|
|
+ getBuildingList(item.id).then(res => {
|
|
|
|
+ this.LDList = res.data
|
|
|
|
+ // console.log("楼栋=", res)
|
|
|
|
+ })
|
|
|
|
+ } else if (this.type == 'ld') {
|
|
|
|
+ this.LDValue = item;
|
|
|
|
+ if (!this.isEmpty(this.projectValue.dictValue)) {
|
|
|
|
+
|
|
|
|
+ //楼栋选完 判断 工程周期
|
|
|
|
+ this.getStatus();
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ },
|
|
|
|
+ //关闭弹窗
|
|
|
|
+ close(e) {
|
|
|
|
+ this.open = false
|
|
|
|
+ },
|
|
|
|
+ //关闭弹窗
|
|
|
|
+ closeDict(e) {
|
|
|
|
+ this.openDict = false
|
|
|
|
+ },
|
|
|
|
+ getStatus() {
|
|
|
|
+ let unitId = '';
|
|
|
|
+ let houseId = '';
|
|
|
|
+ let buildingId = '';
|
|
|
|
+ if (this.isEmpty(this.LDValue.id)) {
|
|
|
|
+ buildingId = '';
|
|
|
|
+ } else {
|
|
|
|
+ buildingId = this.LDValue.id
|
|
|
|
+ }
|
|
|
|
+ let param = {
|
|
|
|
+ areaId: this.XQValue.id, // 小区id
|
|
|
|
+ buildingId: buildingId, // 楼宇id
|
|
|
|
+ unitId: unitId,
|
|
|
|
+ houseId: houseId, //传空
|
|
|
|
+ enginCycle: this.projectValue.dictValue, // 工程周期
|
|
|
|
+ enginType: this.objValue.enginType, //写死 上一页面传过来的
|
|
|
|
+ enginClassification: this.objValue.enginClassification, //写死 上一页面传过来的 //室内 - 庭院 - 架空
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ getRoomProjectId(param).then(res => {
|
|
|
|
+
|
|
|
|
+ if (res.code == '200') {
|
|
|
|
+
|
|
|
|
+ if (res.data != null && res.data.zEngineeringNodeBoList != null) {
|
|
|
|
+
|
|
|
|
+ res.data.zEngineeringNodeBoList.forEach((item, index) => {
|
|
|
|
+ if (this.objValue.enginClassValue == item.type) {
|
|
|
|
+ this.reviewStatus = item.reviewStatus;
|
|
|
|
+ if (item.reviewStatus == '1')
|
|
|
|
+ this.$modal.msg('当前工程已结束')
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.reviewStatus = '' //置空
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.$modal.msg(res.msg)
|
|
|
|
+ this.reviewStatus = '' //置空
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+ },
|
|
|
|
+ //提交数据
|
|
|
|
+ submit() {
|
|
|
|
+
|
|
|
|
+ if (this.isEmpty(this.projectValue.dictValue)) {
|
|
|
|
+ this.$modal.msg("请选择工程周期")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (this.isEmpty(this.XZQValue.dictValue)) {
|
|
|
|
+ this.$modal.msg("请选择行政区")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (this.isEmpty(this.XQValue.id)) {
|
|
|
|
+ this.$modal.msg("请选择小区")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ // else if (this.isEmpty(this.LDValue.id)) {
|
|
|
|
+ // this.$modal.msg("请选择楼栋")
|
|
|
|
+ // }
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ if (this.objValue.enginClassValue == '回填' && this.isEmpty(this.BackfillingTime)) {
|
|
|
|
+ this.$modal.msg("请选择回填时间")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (this.objValue.enginClassValue == '打压' && this.isEmpty(this.isOkValue)) {
|
|
|
|
+ this.$modal.msg("请选择分段打压是否合格")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ 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
|
|
|
|
+ }
|
|
|
|
+ //提交
|
|
|
|
+ this.onsubmit();
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ onsubmit() {
|
|
|
|
+
|
|
|
|
+ let unitId = '';
|
|
|
|
+ let houseId = '';
|
|
|
|
+ let buildingId = '';
|
|
|
|
+ if (this.isEmpty(this.LDValue.id)) {
|
|
|
|
+ buildingId = '';
|
|
|
|
+ } else {
|
|
|
|
+ buildingId = this.LDValue.id
|
|
|
|
+ }
|
|
|
|
+ //提交
|
|
|
|
+ let param = {
|
|
|
|
+ district: this.XZQValue.dictValue,
|
|
|
|
+ areaId: this.XQValue.id,
|
|
|
|
+ buildingId: buildingId, //不必传 如果没有传 ' '
|
|
|
|
+ unitId: unitId,
|
|
|
|
+ houseId: houseId, //传空
|
|
|
|
+
|
|
|
|
+ enginType: this.objValue.enginType, //写死 上一页面传过来的
|
|
|
|
+ enginClassification: this.objValue.enginClassification, //写死 上一页面传过来的 //室内 - 庭院 - 架空
|
|
|
|
+ enginCycle: this.projectValue.dictValue, //工程周期
|
|
|
|
+ zEngineeringNodeBo: {
|
|
|
|
+ type: this.objValue.enginClassValue, //写死 上一页面传过来的 (拆旧管等 字典值)
|
|
|
|
+ zEngineeringInfoBo: {
|
|
|
|
+ //constructAccordingDrawings: this.isCheck, //是否按图纸施工
|
|
|
|
+ segmentedCompressionQualified: this.isOkValue, // 分段打压是否台格
|
|
|
|
+ zEngiineeringPhotoBoList: this.imgArr, //照片集合
|
|
|
|
+ constructTime: this.time, //施工时间
|
|
|
|
+ backfillTime: this.BackfillingTime, // 回填时间
|
|
|
|
+ remark: this.projectContent, //施工内容
|
|
|
|
+ // headName: this.user.nickName, // 负责人名称
|
|
|
|
+ // headPhone: this.user.phonenumber, // 负责人电话
|
|
|
|
+ zEngineeringMaterialBo: [{
|
|
|
|
+ materialQuality: this.materialValue.id, //材质
|
|
|
|
+ specifications: this.specificationValue.id, //规格
|
|
|
|
+ number: this.inputNumberValue //数量
|
|
|
|
+ }]
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ addTearOldPipe(param).then(res => {
|
|
|
|
+ if (res.code == '200') {
|
|
|
|
+ uni.showToast({
|
|
|
|
+ title: res.msg,
|
|
|
|
+ icon: 'none',
|
|
|
|
+ //显示持续时间为 3秒
|
|
|
|
+ duration: 2000
|
|
|
|
+ });
|
|
|
|
+ setTimeout(function() {
|
|
|
|
+ uni.navigateBack();
|
|
|
|
+ }, 1000)
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ history() {
|
|
|
|
+ if (this.isEmpty(this.projectValue.dictValue)) {
|
|
|
|
+ this.$modal.msg("请选择工程周期")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (this.isEmpty(this.XZQValue.dictValue)) {
|
|
|
|
+ this.$modal.msg("请选择行政区")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+ if (this.isEmpty(this.XQValue.id)) {
|
|
|
|
+ this.$modal.msg("请选择小区")
|
|
|
|
+ return
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ let unitId = '';
|
|
|
|
+ let houseId = '';
|
|
|
|
+ let buildingId = '';
|
|
|
|
+ if (this.isEmpty(this.LDValue.id)) {
|
|
|
|
+ buildingId = '';
|
|
|
|
+ } else {
|
|
|
|
+ buildingId = this.LDValue.id
|
|
|
|
+ }
|
|
|
|
+ let param = {
|
|
|
|
+ areaId: this.XQValue.id, // 小区id
|
|
|
|
+ buildingId: buildingId, // 楼宇id
|
|
|
|
+ enginCycle: this.projectValue.dictValue, // 工程周期
|
|
|
|
+ unitId: unitId,
|
|
|
|
+ houseId: houseId, //传空
|
|
|
|
+ enginType: this.objValue.enginType, //写死 上一页面传过来的
|
|
|
|
+ enginClassification: this.objValue.enginClassification, //写死 上一页面传过来的 //室内 - 庭院 - 架空
|
|
|
|
+ }
|
|
|
|
+ getRoomProjectId(param).then(res => {
|
|
|
|
+
|
|
|
|
+ if (res.code == '200') {
|
|
|
|
+
|
|
|
|
+ if (res.data != null) {
|
|
|
|
+
|
|
|
|
+ getRoomProjectList(res.data.id, this.objValue.enginClassValue).then(
|
|
|
|
+ res => {
|
|
|
|
+
|
|
|
|
+ this.historyList = res.data
|
|
|
|
+ if (res.data.zEngineeringNodeBo != null) {
|
|
|
|
+ this.showHistoryList();
|
|
|
|
+ } else {
|
|
|
|
+ this.$modal.msg("暂无历史信息")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ } else {
|
|
|
|
+ this.$modal.msg("暂无工程信息")
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ this.$modal.msg(res.msg)
|
|
|
|
+ }
|
|
|
|
+ })
|
|
|
|
+
|
|
|
|
+ },
|
|
|
|
+ showHistoryList() {
|
|
|
|
+ this.$refs.refShare.handleShowShare();
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ </script>
|
|
|
|
+
|
|
|
|
+ <style lang="scss">
|
|
|
|
+ .container {
|
|
|
|
+ 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;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .background {
|
|
|
|
+ // border: 15px solid hsla(0, 0%, 100%, .5);
|
|
|
|
+ background: white;
|
|
|
|
+ background-clip: padding-box;
|
|
|
|
+ padding: 20rpx;
|
|
|
|
+ border-radius: 20rpx;
|
|
|
|
+ margin: 20rpx;
|
|
|
|
+ /*从padding开始往外面裁剪背景*/
|
|
|
|
+
|
|
|
|
+
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .btn {
|
|
|
|
+ width: 715rpx;
|
|
|
|
+ height: 69rpx;
|
|
|
|
+ background: #79A4F0;
|
|
|
|
+ border-radius: 6rpx;
|
|
|
|
+ font-size: 25rpx;
|
|
|
|
+ font-family: Microsoft YaHei;
|
|
|
|
+ font-weight: 400;
|
|
|
|
+ color: #FFFFFF;
|
|
|
|
+ line-height: 69rpx;
|
|
|
|
+ margin-top: 40rpx;
|
|
|
|
+ margin-bottom: 100rpx;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .number {
|
|
|
|
+ display: flex;
|
|
|
|
+ /* 水平居中显示子元素 */
|
|
|
|
+ align-items: flex-start;
|
|
|
|
+ /* 垂直居中显示子元素 */
|
|
|
|
+ justify-content: space-between;
|
|
|
|
+ /* 左右间距等于间距大小 */
|
|
|
|
+ padding: 10px;
|
|
|
|
+ /* 设置padding以提高视觉效果 */
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ .textarea {
|
|
|
|
+ margin-top: 10upx;
|
|
|
|
+ width: 100%;
|
|
|
|
+ border: 1rpx solid red;
|
|
|
|
+ min-height: 100upx;
|
|
|
|
+ line-height: 20px;
|
|
|
|
+ }
|
|
|
|
+ </style>
|