From 17efddc6a667670dca682bf36b51a43e99615e6d Mon Sep 17 00:00:00 2001
From: k94314517 <8417338+k94314517@user.noreply.gitee.com>
Date: 星期三, 16 十月 2024 15:59:38 +0800
Subject: [PATCH] 代码初始化

---
 h5/pages/staff/snapshot.vue |  666 ++++++++++++++++++++++++++++++++++++++++---------------
 1 files changed, 484 insertions(+), 182 deletions(-)

diff --git a/h5/pages/staff/snapshot.vue b/h5/pages/staff/snapshot.vue
index 9a0037f..b0677bc 100644
--- a/h5/pages/staff/snapshot.vue
+++ b/h5/pages/staff/snapshot.vue
@@ -1,198 +1,500 @@
 <template>
-	<view class="main_app">
-		<view class="main_wrap">
-			<!--  -->
-			<view class="line">
-				<view class="label">
-					<text>*</text>
-					<text>闅愭偅鍖哄煙</text>
-				</view>
-				<view class="value" @click="isShowArea = true">
-					<text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '璇烽�夋嫨' }}</text>
-					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
-				</view>
-			</view>
-			<view class="line">
-				<view class="label">
-					<text>*</text>
-					<text>鎺ュ彈浜�</text>
-				</view>
-				<view class="value" @click="selMember">
-					<text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '璇烽�夋嫨' }}</text>
-					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
-				</view>
-			</view>
-			<view class="empty"></view>
-			<view class="line">
-				<view class="label">
-					<text>*</text>
-					<text>闅愭偅绫诲瀷</text>
-				</view>
-				<view class="value">
-					<text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '璇烽�夋嫨' }}</text>
-					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
-				</view>
-			</view>
-			<view class="upload_line">
-				<view class="name">鐜板満鎯呭喌</view>
-				<view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-if="!param.imgurlUrl"><u-icon name="plus" color="rgb(153, 153, 153)" size="28"></u-icon></view>
-				<view class="adduser_list_item_ipt1_upload" @click="upload('imgurl')" v-else><image :src="param.imgurlUrl" mode="widthFix"></image></view>
-			</view>
+  <view class="main_app">
+    <view class="main_wrap">
+      <!--  -->
+      <view class="line">
+        <view class="label">
+          <text>*</text>
+          <text>闅愭偅鍖哄煙</text>
+        </view>
+        <view class="value" @click="isShowArea = true">
+          <text
+            class="mr6"
+            :style="{ color: param.areaName ? '#000000' : '#999999' }"
+            >{{ param.areaName ? param.areaName : "璇烽�夋嫨" }}</text
+          >
+          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+        </view>
+      </view>
+      <view class="line">
+        <view class="label">
+          <text>*</text>
+          <text>鎺ユ敹浜�</text>
+        </view>
+        <view class="value" @click="selMember">
+          <text
+            class="mr6"
+            :style="{ color: param.checkorName ? '#000000' : '#999999' }"
+            >{{ param.checkorName ? param.checkorName : "璇烽�夋嫨" }}</text
+          >
+          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+        </view>
+      </view>
+      <view class="empty"></view>
+      <view class="line">
+        <view class="label">
+          <text>*</text>
+          <text>闅愭偅绫诲瀷</text>
+        </view>
+        <view class="value" @click="isShowType = true">
+          <text
+            class="mr6"
+            :style="{ color: param.categoryName ? '#000000' : '#999999' }"
+            >{{ param.categoryName ? param.categoryName : "璇烽�夋嫨" }}</text
+          >
+          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+        </view>
+      </view>
+      <view class="upload_line">
+        <view class="name">鐜板満鎯呭喌</view>
+        <view class="wrap">
+          <view
+            class="adduser_list_item_ipt1_upload"
+            @click="showUpload = true"
+          >
+            <u-icon name="plus" color="rgb(153, 153, 153)" size="20"></u-icon>
+            <view class="mt6">鍥剧墖/瑙嗛</view>
+          </view>
+          <view
+            class="adduser_list_item_ipt1_upload"
+            v-for="(item, i) in submitFileList"
+            :key="i"
+          >
+            <u-icon
+              class="close"
+              size="20"
+              name="close-circle-fill"
+              color="red"
+              @click="fileDel(i)"
+            ></u-icon>
+            <image
+              v-if="item.type == 0"
+              :src="item.fileurlFull"
+              mode="widthFix"
+            ></image
+            ><video v-if="item.type == 1" :src="item.fileurlFull"></video
+          ></view>
+        </view>
+      </view>
+      <view class="empty"></view>
+      <view class="upload_line" style="padding: 15px 0 0">
+        <view class="name" style="margin-bottom: 10rpx">
+          <text style="color: #e42d2d">*</text>
+          <text>鎯呭喌璇存槑</text>
+        </view>
+        <view class="value">
+          <textarea
+            placeholder="璇疯缁嗘弿杩扮幇鍦烘儏鍐碉紝涓嶅皯浜�10涓瓧"
+            minlength="10"
+            v-model="param.content"
+            placeholder-style="color: #999999;"
+          />
+        </view>
+      </view>
+      <view class="empty"></view>
+      <view class="line">
+        <view class="label">
+          <text></text>
+          <text>鎻愭姤浜�</text>
+        </view>
+        <view class="value"
+          ><input
+            type="text"
+            disabled
+            placeholder="璇疯緭鍏ユ彁鎶ヤ汉"
+            v-model="param.memberName"
+            placeholder-style="color: #999999;"
+        /></view>
+      </view>
+      <view class="line">
+        <view class="label">
+          <text></text>
+          <text>鑱旂郴鐢佃瘽</text>
+        </view>
+        <view class="value"
+          ><input
+            type="text"
+            disabled
+            placeholder="璇疯緭鍏ヨ仈绯荤數璇�"
+            v-model="param.memberPhone"
+            placeholder-style="color: #999999;"
+        /></view>
+      </view>
+      <view class="line">
+        <view class="label">
+          <text></text>
+          <text>鎻愭姤鏃堕棿</text>
+        </view>
+        <view class="value" @click="isShowTime = true">
+          <text
+            class="mr6"
+            :style="{ color: param.submitTime ? '#000000' : '#999999' }"
+            >{{ param.submitTime ? param.submitTime : "璇烽�夋嫨" }}</text
+          >
+          <u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
+        </view>
+      </view>
 
-			<view class="line">
-				<view class="label">
-					<text></text>
-					<text>鎻愭姤浜�</text>
-				</view>
-				<view class="value"><input type="text" placeholder="璇疯緭鍏ユ彁鎶ヤ汉" v-model="param.receptMemberName" @blur="getUser" placeholder-style="color: #999999;" /></view>
-			</view>
-			<view class="line">
-				<view class="label">
-					<text></text>
-					<text>鑱旂郴鐢佃瘽</text>
-				</view>
-				<view class="value"><input type="text" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" v-model="param.receptMemberName" @blur="getUser" placeholder-style="color: #999999;" /></view>
-			</view>
-			<view class="line">
-				<view class="label">
-					<text></text>
-					<text>鎻愭姤鏃堕棿</text>
-				</view>
-				<view class="value">
-					<text class="mr6" :style="{ color: param.area ? '#000000' : '#999999' }">{{ param.area ? param.area : '璇烽�夋嫨' }}</text>
-					<u-icon name="arrow-right" color="#CCCCCC" size="20"></u-icon>
-				</view>
-			</view>
-		</view>
-		<!--  -->
-		<!-- 鍖哄煙 -->
-		<u-picker keyName="name" :show="isShowArea" :columns="areaOptions" @confirm="seletedArea" @cancel="isShowArea = false"></u-picker>
-	</view>
+      <view class="footer"
+        ><view class="footer_btn" @click="onSubmit">鎻愪氦</view></view
+      >
+    </view>
+    <!--  -->
+    <!-- 鍖哄煙 -->
+    <u-picker
+      keyName="name"
+      :show="isShowArea"
+      closeOnClickOverlay
+      :columns="areaOptions"
+      @confirm="seletedArea"
+      @close="isShowArea = false"
+      @cancel="isShowArea = false"
+    ></u-picker>
+    <u-picker
+      keyName="name"
+      :show="isShowType"
+      closeOnClickOverlay
+      :columns="areaType"
+      @confirm="seletedType"
+      @close="isShowType = false"
+      @cancel="isShowType = false"
+    ></u-picker>
+    <!--  -->
+    <u-datetime-picker
+      :show="isShowTime"
+      :minDate="new Date().getTime()"
+      mode="datetime"
+      closeOnClickOverlay
+      @cancel="isShowTime = false"
+      @close="isShowTime = false"
+      @confirm="seletedDate"
+    ></u-datetime-picker>
+    <!--  -->
+    <u-popup :show="showUpload" @close="showUpload = false" closeOnClickOverlay>
+      <view class="upload_wrap">
+        <view class="btn" @click="uploadImage">閫夋嫨鍥剧墖</view>
+        <view class="btn" @click="uploadVideo">閫夋嫨瑙嗛</view>
+      </view>
+    </u-popup>
+  </view>
 </template>
 
 <script>
-	import { uploadUrl } from '@/api'
+import {
+  uploadUrl,
+  DangerCreate,
+  DangerConfigType
+} from '@/api'
+import dayjs from 'dayjs'
 export default {
-	data() {
-		return {
-			param: {},
-			isShowArea: false,
-			areaOptions: [[{ name: '111', id: 11 }, { name: '111', id: 11 }]]
-		};
-	},
-	methods: {
-		seletedArea(e) {
-			const item = e.value[0];
-			console.log(item);
-			this.isShowArea = false;
-		},
-		selMember() {
-			uni.navigateTo({
-				url: '/pages/staff/memberSel'
-			});
-		},
-		upload() {
-			uni.chooseImage({
-				success: (chooseImageRes) => {
-					uni.showLoading({ title: '涓婁紶涓�', mask: true });
-					for (let i = 0; i < chooseImageRes.tempFilePaths.length; i++) {
-						uni.uploadFile({
-							url: `${uploadUrl}visitsAdmin/cloudService/web/public/uploadFtp.do`,
-							filePath: chooseImageRes.tempFilePaths[i],
-							name: 'file',
-							formData: {
-								folderCode: 'MEMBER_IMG'
-							},
-							success: (uploadFileRes) => {
-								console.log('uploadFileRes', uploadFileRes);
-								let res = JSON.parse(uploadFileRes.data)
-								if (type === 'faceImg') {
-									this.param.faceImg = res.data.halfPath
-									this.param.faceImgUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
-								} else {
-									this.param.imgurl = res.data.halfPath
-									this.param.imgurlUrl = res.data.prefixPath + res.data.folder + res.data.halfPath
-								}
-							},
-							complete() {
-								if (i === chooseImageRes.tempFilePaths.length - 1) {
-									uni.hideLoading();
-								}
-							}
-						});
-					}
-				}
-			});
-		},
-		getUser() {}
-	}
+  data() {
+    return {
+      param: {},
+      submitFileList: [],
+
+      isShowArea: false,
+      isShowType: false,
+      isShowTime: false,
+      showUpload: false,
+
+      areaOptions: [],
+      areaType: [],
+    }
+  },
+  onLoad(option) {
+    this.initConfig()
+    const userInfo = uni.getStorageSync('userInfo') || {}
+    this.$set(this.param, 'memberName', userInfo.realname)
+    this.$set(this.param, 'memberPhone', userInfo.mobile)
+    this.$set(this.param, 'memberId', userInfo.id)
+    this.$set(this.param, 'submitTime', dayjs().format('YYYY-MM-DD HH:mm:ss'))
+  },
+  mounted() {
+    this.$eventBus.$on('snapshotSel', (option) => {
+      this.$set(this.param, 'checkUserId', option.id)
+      this.$set(this.param, 'applyCheckUserId', option.id)
+      this.$set(this.param, 'checkorName', option.name)
+    })
+  },
+  methods: {
+    onSubmit() {
+      const { param, submitFileList } = this
+      if (!param.areaName) return uni.showToast({
+        title: '璇烽�夋嫨闅愭偅鍖哄煙',
+        icon: 'none'
+      })
+      if (!param.applyCheckUserId) return uni.showToast({
+        title: '璇烽�夋嫨鎺ユ敹浜�',
+        icon: 'none'
+      })
+      if (!param.categoryName) return uni.showToast({
+        title: '璇烽�夋嫨闅愭偅绫诲瀷',
+        icon: 'none'
+      })
+      if (!param.content) return uni.showToast({
+        title: '璇疯緭鍏ユ儏鍐佃鏄�',
+        icon: 'none'
+      })
+      if (param.content.length < 10) return uni.showToast({
+        title: '鎯呭喌璇存槑涓嶅緱灏忎簬10涓瓧',
+        icon: 'none'
+      })
+
+      DangerCreate({
+        ...param,
+        submitFileList
+      }).then(res => {
+        if (res.code === 200) {
+          this.$jump('/pages/staff/snapshotResult')
+        }
+      })
+    },
+    seletedArea(e) {
+      const item = e.value[0]
+      this.$set(this.param, 'areaId', item.id)
+      this.$set(this.param, 'areaName', item.name)
+      console.log(item)
+      if (item.memberIds && item.memberIds.indexOf(',') === -1) {
+        this.$set(this.param, 'checkUserId', item.memberIds)
+        this.$set(this.param, 'applyCheckUserId', item.memberIds)
+        this.$set(this.param, 'checkorName', item.memberNames)
+      } else {
+        this.$set(this.param, 'checkUserId', '')
+        this.$set(this.param, 'applyCheckUserId', '')
+        this.$set(this.param, 'checkorName', '')
+      }
+      this.isShowArea = false
+    },
+    seletedType(e) {
+      const item = e.value[0]
+      this.$set(this.param, 'cateId', item.id)
+      this.$set(this.param, 'categoryName', item.name)
+      console.log(item)
+      this.isShowType = false
+    },
+    seletedSafety(e) {
+
+    },
+    seletedDate(e) {
+      this.$set(this.param, 'submitTime', dayjs(e.value).format('YYYY-MM-DD HH:mm:ss'))
+      this.isShowTime = false
+    },
+    initConfig() {
+      DangerConfigType({ type: '1' }).then(res => {
+        this.areaType = [res.data]
+      })
+      DangerConfigType({ type: '0' }).then(res => {
+        this.areaOptions = [res.data]
+      })
+    },
+    selMember() {
+      if (!this.param.areaId) return uni.showToast({
+        title: '璇峰厛閫夋嫨闅愭偅鍖哄煙',
+        icon: 'none'
+      })
+      uni.navigateTo({
+        url: '/pages/staff/memberSel?areaId=' + this.param.areaId
+      })
+    },
+    fileDel(i) {
+      this.submitFileList.splice(i, 1)
+    },
+    uploadImage() {
+      this.showUpload = false
+      let token = uni.getStorageSync('token') || ''
+      uni.chooseImage({
+        count: 4,
+        success: (chooseImageRes) => {
+          uni.showLoading({ title: '涓婁紶涓�', mask: true })
+          const tempFilePaths = chooseImageRes.tempFilePaths
+          let imgs = tempFilePaths.map((value, index) => {
+            return {
+              name: 'file',
+              uri: value
+            }
+          })
+          uni.uploadFile({
+            url: `${uploadUrl}`,
+            files: imgs,
+            name: 'file',
+            formData: {
+              folder: 'HIDDEN_DANGER_FILE'
+            },
+            header: {
+              Dm_user_token: token
+            },
+            success: (uploadFileRes) => {
+              let res = JSON.parse(uploadFileRes.data)
+              console.log('res', res.data)
+              if (res.data && res.data.length > 0) {
+                res.data.forEach(i => {
+                  i.type = 0
+                  i.fileurl = i.imgaddr
+                  i.fileurlFull = i.url
+                  this.submitFileList.push(i)
+                })
+              }
+            },
+            fail(err) {
+              console.log('err', err)
+            },
+            complete() {
+              uni.hideLoading()
+              // if (i === chooseImageRes.tempFilePaths.length - 1) {
+              //   uni.hideLoading()
+              // }
+            }
+          })
+          // }
+        }
+      })
+    },
+    uploadVideo() {
+      this.showUpload = false
+      let that = this
+      let token = uni.getStorageSync('token') || ''
+      uni.chooseVideo({
+        success: (chooseImageRes) => {
+          uni.showLoading({ title: '涓婁紶涓�', mask: true })
+          uni.uploadFile({
+            url: `${uploadUrl}`,
+            filePath: chooseImageRes.tempFilePath,
+            header: {
+              Dm_user_token: token
+            },
+            name: 'file',
+            formData: {
+              folder: 'HIDDEN_DANGER_FILE'
+            },
+            success: (uploadFileRes) => {
+              let res = JSON.parse(uploadFileRes.data)
+              if (res.data && res.data.length > 0) {
+                res.data.forEach(i => {
+                  i.type = 1
+                  i.fileurl = i.imgaddr
+                  i.fileurlFull = i.url
+                  this.submitFileList.push(i)
+                })
+              }
+            },
+            complete() {
+              uni.hideLoading()
+            }
+          })
+        }
+      })
+    },
+
+    getUser() { }
+  }
 };
 </script>
 
-<style lang="scss" scoped>
+<style lang="scss">
 .main_wrap {
-	.line {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		border-bottom: 1rpx solid #e5e5e5;
-		padding: 30rpx 0;
-		.label {
-			font-size: 30rpx;
-			font-weight: 400;
-			text {
-				&:nth-child(1) {
-					color: #e42d2d;
-					margin-right: 4rpx;
-				}
-			}
-		}
-		.value {
-			flex: 1;
-			height: 100%;
-			margin-left: 30rpx;
-			display: flex;
-			align-items: center;
-			justify-content: flex-end;
-			input {
-				width: 100%;
-				height: 100%;
-				text-align: right;
-				font-size: 28rpx;
-				font-weight: 400;
-				color: #222222;
-			}
-		}
-	}
-	.upload_line {
-		padding: 30rpx 0;
-		.adduser_list_item_ipt1_upload {
-			margin-top: 24rpx;
-			width: 120rpx;
-			height: 120rpx;
-			border: 2rpx solid #E5E5E5;
-			background: #f7f7f7;
-			color: #666666;
-			font-size: 22rpx;
-			display: flex;
-			align-items: center;
-			justify-content: center;
-			overflow: hidden;
-			image {
-				width: 100%;
-				height: 100%;
-			}
-		}
-	}
+  padding-bottom: 200rpx;
+  .line {
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    border-bottom: 1rpx solid #e5e5e5;
+    padding: 30rpx 0;
+    .label {
+      font-size: 30rpx;
+      font-weight: 400;
+      text {
+        &:nth-child(1) {
+          color: #e42d2d;
+          margin-right: 4rpx;
+        }
+      }
+    }
+    .value {
+      flex: 1;
+      height: 100%;
+      margin-left: 30rpx;
+      display: flex;
+      align-items: center;
+      justify-content: flex-end;
+      input {
+        width: 100%;
+        height: 100%;
+        text-align: right;
+        font-size: 28rpx;
+        font-weight: 400;
+        color: #222222;
+      }
+    }
+  }
+  .upload_line {
+    padding: 30rpx 0;
+    .wrap {
+      display: flex;
+      flex-wrap: wrap;
+    }
+    .adduser_list_item_ipt1_upload {
+      margin-top: 24rpx;
+      width: 120rpx;
+      height: 120rpx;
+      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;
+      }
+      image {
+        width: 100%;
+        height: 100%;
+      }
+      video {
+        width: 100%;
+        max-height: 120rpx;
+      }
+    }
+  }
 }
-.main_app {
-	// padding-top: 10rpx;
+.upload_wrap {
+  width: 100%;
+  .btn {
+    height: 90rpx;
+    line-height: 90rpx;
+    text-align: center;
+  }
 }
+.footer {
+  width: 100%;
+  padding: 0 30rpx;
+  padding-bottom: env(safe-area-inset-bottom);
+  box-sizing: border-box;
+  position: fixed;
+  left: 0;
+  bottom: 68rpx;
 
+  .footer_btn {
+    width: 100%;
+    height: 88rpx;
+    line-height: 88rpx;
+    text-align: center;
+    background: $uni-color-primary;
+    border-radius: 44rpx;
+    font-size: 32rpx;
+    color: #ffffff;
+  }
+}
 .empty {
-	width: 750rpx;
-	height: 20rpx;
-	background-color: #f7f7f7;
-	margin: 0 -30rpx;
+  width: 750rpx;
+  height: 20rpx;
+  background-color: #f7f7f7;
+  margin: 0 -30rpx;
 }
 </style>

--
Gitblit v1.9.3