| | |
| | | <view class="main_app">
|
| | | <view class="info">
|
| | | <view class="head">
|
| | | <view class="">巡检点</view>
|
| | | <view class="status">已巡检</view>
|
| | | <view class="">{{ info.pointName }}</view>
|
| | | <view class="status" :class="{primaryColor: info.status == 0}">{{ info.status == 1 ? '已巡检' : '待巡检' }}</view>
|
| | | </view>
|
| | | <template v-if="false">
|
| | | <template v-if="info.status == 1">
|
| | | <view class="line">
|
| | | <div class="la">巡检结果:</div>
|
| | | <div class="val">正常</div>
|
| | | <div class="val primaryColor" :class="{red: info.dealStatus == 1}">{{ info.dealStatus == 0 ? '正常' : '异常' }}
|
| | | </div>
|
| | | </view>
|
| | | <view class="line">
|
| | | <div class="la">巡检时间:</div>
|
| | | <div class="val">2022</div>
|
| | | <div class="val">{{ info.dealDate }}</div>
|
| | | </view>
|
| | | </template>
|
| | | <template v-else>
|
| | | <view class="desc">
|
| | | 巡检内容
|
| | | {{ info.content }}
|
| | | </view>
|
| | | </template>
|
| | | </view>
|
| | | <!-- -->
|
| | | <view v-if="false" class="content">
|
| | | <view v-if="info.status == 1" class="content">
|
| | | <view class="title">巡检记录</view>
|
| | | <view class="desc">已经更换灯泡</view>
|
| | | <view class="files">
|
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in info.multifileList" :key="i">
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | | <view v-if="info.dealInfo" class="desc">{{ info.dealInfo }}</view>
|
| | | <view class="line line_s">
|
| | | <view class="la">巡检人:</view>
|
| | | <view class="val">xxx</view>
|
| | | <view class="val">{{ info.realname }}</view>
|
| | | </view>
|
| | | <view class="line line_s">
|
| | | <view class="la">巡检时间:</view>
|
| | | <view class="val">xxx</view>
|
| | | <view class="val">{{ info.dealDate }}</view>
|
| | | </view>
|
| | | </view>
|
| | | <view v-else class="content">
|
| | | <view class="title">巡检处理</view>
|
| | | <view class="appr_modal">
|
| | | <view class="df_sb">
|
| | | <view>处理时间</view>
|
| | | <view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealTime">
|
| | | {{ handleParam.dealTime }}
|
| | | <view><text class="red">*</text>处理时间</view>
|
| | | <view class="df_ac" @click="isShowHandleDate = true" v-if="handleParam.dealDate">
|
| | | {{ handleParam.dealDate }}
|
| | | <u-icon name="arrow-right"></u-icon>
|
| | | </view>
|
| | | <view @click="isShowHandleDate = true" v-else class="placeholder9 df_ac">
|
| | |
| | | <u-icon name="arrow-right"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | <view class="df_sb">
|
| | | <view class="">巡检结果</view>
|
| | | <view class="df_ac" @click="isShowRes = true" v-if="handleParam.dealDate">
|
| | | {{ handleParam.dealName }}
|
| | | <u-icon name="arrow-right"></u-icon>
|
| | | </view>
|
| | | </view>
|
| | | <view class="label">
|
| | | <text>*</text>
|
| | | 上传图片/视频
|
| | | </view>
|
| | | <view class="upload_wrap">
|
| | |
| | | <u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon>
|
| | | <view class="mt6">图片/视频</view>
|
| | | </view>
|
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in dealFileList" :key="i">
|
| | | <view class="adduser_list_item_ipt1_upload" v-for="(item, i) in fileList" :key="i">
|
| | | <u-icon class="close" size="20" name="close-circle-fill" color="red"
|
| | | @click="fileDel('dealBeforeFileList', i)"></u-icon>
|
| | | @click="fileDel('fileList', i)"></u-icon>
|
| | | <image v-if="item.type == 0" :src="item.fileurlFull" mode="widthFix"></image>
|
| | | <video v-if="item.type == 1" :src="item.fileurlFull" :controls="false"></video>
|
| | | </view>
|
| | | </view>
|
| | |
|
| | | <view class="label">处理说明</view>
|
| | | <textarea v-model="handleParam.checkInfo" placeholder="请填写处理说明" placeholder-class="placeholder9" />
|
| | | <view class="label" style="margin-bottom: 10rpx;">处理说明</view>
|
| | | <textarea v-model="handleParam.dealInfo" :maxlength="-1" placeholder="请填写处理说明"
|
| | | placeholder-class="placeholder9" />
|
| | | </view>
|
| | | </view> |
| | | <view class="sub_btn">确认巡检</view>
|
| | | </view>
|
| | | <view v-if="info.status == 0" class="sub_btn" @click="onSubmit">确认巡检</view>
|
| | | <!-- -->
|
| | | <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
|
| | | <view class="sel_upload_wrap">
|
| | |
| | | <!-- -->
|
| | | <u-datetime-picker :minDate="new Date().getTime()" :show="isShowHandleDate" @confirm="confirmHandleDate"
|
| | | @cancel="isShowHandleDate = false" mode="datetime"></u-datetime-picker>
|
| | | <u-picker :show="isShowRes" keyName="name" @cancel="isShowRes = false" @confirm='confirmRes'
|
| | | :columns="columns"></u-picker>
|
| | |
|
| | | </view>
|
| | | </template>
|
| | |
|
| | | <script>
|
| | | import {
|
| | | uploadUrl
|
| | | uploadUrl,
|
| | | ywPatrolPointDetail,
|
| | | patrolData
|
| | | } from '@/api'
|
| | | import dayjs from 'dayjs';
|
| | | export default {
|
| | | data() {
|
| | | return {
|
| | | id: '',
|
| | | info: {},
|
| | | isShowRes: false,
|
| | | showUpload: false,
|
| | | isShowHandle: false,
|
| | | isShowHandleDate: false,
|
| | | handleParam: {},
|
| | | dealFileList: []
|
| | | handleParam: {
|
| | | dealStatus: 0,
|
| | | dealName: '正常'
|
| | | },
|
| | | fileList: [],
|
| | | columns: [
|
| | | [{
|
| | | id: 0,
|
| | | name: '正常'
|
| | | },
|
| | | {
|
| | | id: 1,
|
| | | name: '异常'
|
| | | },
|
| | | {
|
| | | id: '',
|
| | | name: '跳过'
|
| | | },
|
| | | ]
|
| | | ],
|
| | | };
|
| | | },
|
| | | onLoad(option) {
|
| | | this.id = option.id
|
| | | this.getDetail()
|
| | | this.$set(this.handleParam, 'dealDate', dayjs().format('YYYY-MM-DD HH:mm:ss'))
|
| | | },
|
| | | methods: {
|
| | | onSubmit() {
|
| | |
|
| | | const {
|
| | | handleParam,
|
| | | fileList,
|
| | | id
|
| | | } = this
|
| | | patrolData({
|
| | | ...handleParam,
|
| | | multifileList: fileList,
|
| | | id,
|
| | | }).then(res => {
|
| | | if (handleParam.dealStatus == 1) {
|
| | | return uni.showModal({
|
| | | title: '温馨提示',
|
| | | content: '巡检结果异常,是否前往提交工单?',
|
| | | success: (res) => {
|
| | | if (res.confirm) {
|
| | | this.showToast('操作成功') |
| | | setTimeout(() => { |
| | | uni.redirectTo({ |
| | | url: '/pages/workOrder/edit' |
| | | }) |
| | | }, 300)
|
| | | }else{ |
| | | this.showToast('操作成功') |
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 300) |
| | | }
|
| | | }
|
| | | });
|
| | | } else {
|
| | | this.showToast('操作成功')
|
| | | setTimeout(() => { |
| | | uni.navigateBack() |
| | | }, 300)
|
| | | }
|
| | | })
|
| | | },
|
| | | getDetail() {
|
| | | const {
|
| | | id
|
| | | } = this
|
| | | ywPatrolPointDetail(id).then(res => {
|
| | | this.info = res.data
|
| | | })
|
| | | },
|
| | | callPhone() {
|
| | | uni.makePhoneCall({
|
| | |
| | | });
|
| | | },
|
| | | confirmHandleDate(e) {
|
| | | this.$set(this.handleParam, 'dealTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
|
| | | this.$set(this.handleParam, 'dealDate', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'));
|
| | | this.isShowHandleDate = false;
|
| | | },
|
| | | confirmRes(e) {
|
| | | this.$set(this.handleParam, 'dealStatus', e.value[0].id)
|
| | | this.$set(this.handleParam, 'dealName', e.value[0].name)
|
| | | this.isShowRes = false
|
| | | },
|
| | | fileDel(str, i) {
|
| | | this[str].splice(i, 1);
|
| | |
| | | files: imgs,
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'HIDDEN_DANGER_FILE'
|
| | | folder: 'YW_PATROL'
|
| | | },
|
| | | header: {
|
| | | Dm_user_token: token
|
| | |
| | | i.type = 0;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.submitFileList.push(i);
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | |
| | | },
|
| | | name: 'file',
|
| | | formData: {
|
| | | folder: 'HIDDEN_DANGER_FILE'
|
| | | folder: 'YW_PATROL'
|
| | | },
|
| | | success: uploadFileRes => {
|
| | | let res = JSON.parse(uploadFileRes.data);
|
| | |
| | | i.type = 1;
|
| | | i.fileurl = i.imgaddr;
|
| | | i.fileurlFull = i.url;
|
| | | this.submitFileList.push(i);
|
| | | this.fileList.push(i);
|
| | | });
|
| | | }
|
| | | },
|
| | |
| | | text-align: center;
|
| | | }
|
| | | }
|
| | | .sub_btn{ |
| | | position: fixed; |
| | | bottom: 68rpx; |
| | | left: 40rpx; |
| | | width: 670rpx; |
| | | height: 88rpx; |
| | | background: $primaryColor; |
| | | box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0,104,255,0.3); |
| | | border-radius: 44rpx; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | font-weight: 500; |
| | | font-size: 32rpx; |
| | | color: #FFFFFF; |
| | |
|
| | | .sub_btn {
|
| | | // position: fixed;
|
| | | // bottom: 68rpx;
|
| | | // left: 40rpx;
|
| | | width: 670rpx;
|
| | | margin-top: 60rpx;
|
| | | height: 88rpx;
|
| | | background: $primaryColor;
|
| | | box-shadow: 0rpx 8rpx 20rpx 0rpx rgba(0, 104, 255, 0.3);
|
| | | border-radius: 44rpx;
|
| | | display: flex;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | font-weight: 500;
|
| | | font-size: 32rpx;
|
| | | color: #FFFFFF;
|
| | | }
|
| | |
|
| | | .appr_modal {
|
| | | .label {
|
| | | text {
|
| | |
| | | textarea {
|
| | | box-sizing: border-box;
|
| | | width: 690rpx;
|
| | | min-height: 200rpx;
|
| | | min-height: 140rpx;
|
| | | background-color: #f7f7f7;
|
| | | font-size: 28rpx;
|
| | | color: #333333;
|
| | |
| | | margin-bottom: 30rpx;
|
| | | }
|
| | |
|
| | | .adduser_list_item_ipt1_upload {
|
| | | margin-top: 24rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | margin-right: 24rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | | font-size: 22rpx;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | | }
|
| | |
|
| | | .close {
|
| | | position: absolute;
|
| | | right: -20rpx;
|
| | | top: -20rpx;
|
| | | z-index: 9999;
|
| | | }
|
| | | .files {
|
| | | display: flex;
|
| | | margin-bottom: 20rpx;
|
| | | }
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | .adduser_list_item_ipt1_upload {
|
| | | margin-top: 24rpx;
|
| | | width: 156rpx;
|
| | | height: 156rpx;
|
| | | margin-right: 24rpx;
|
| | | border: 2rpx solid #e5e5e5;
|
| | | background: #f7f7f7;
|
| | | color: #666666;
|
| | | font-size: 22rpx;
|
| | | display: flex;
|
| | | flex-direction: column;
|
| | | align-items: center;
|
| | | justify-content: center;
|
| | | position: relative;
|
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | .close {
|
| | | position: absolute;
|
| | | right: -20rpx;
|
| | | top: -20rpx;
|
| | | z-index: 9999;
|
| | | }
|
| | |
|
| | | image {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | |
|
| | | video {
|
| | | width: 100%;
|
| | | height: 100%;
|
| | | }
|
| | | }
|
| | | </style> |