<template>
	<view>
		<cu-custom bgColor="bg-gradual-blueness" :isBack="true">
			<block slot="backText">返回</block>
			<block slot="content">安全例会详情</block>
		</cu-custom>
		<scroll-view scroll-y>
			<view class="dy-card">
				<view class="dy-card-title">
					<text>{{pd.MEETING_TITLE}}</text>
				</view>
				<view class="dy-card-content">
					<view class="dy-card-content-item">
						<text>主持人：</text>
            <text>{{pd.HOST_PERSON}}</text>
					</view>
          <view class="dy-card-content-item">
            <text>记录人：</text>
            <text>{{pd.RECORDER}}</text>
          </view>
          <view class="dy-card-content-item">
            <text>会议开始时间：</text>
            <text>{{pd.MEETING_DATE_START}}</text>
          </view>
          <view class="dy-card-content-item">
            <text>会议结束时间：</text>
            <text>{{pd.MEETING_DATE_END}}</text>
          </view>
          <view class="dy-card-content-item">
            <text>会议类型：</text>
            <text>{{pd.MEETING_TYPE === '1' ? '安全生产例会' : pd.MEETING_TYPE === '2' ? '安全生产委员会会议' : ''}}</text>
          </view>
          <view class="dy-card-content-item">
            <text>会议内容：</text>
            <rich-text :nodes="pd.MEETING_CONTENT"></rich-text>
          </view>
				</view>
			</view>
			<view class="cu-tabbar-height"></view>
		</scroll-view>
    <canvas style="width: 300px; height: 150px; position: absolute; top: -9999px;" canvas-id="watermarkCanvas"></canvas>
    <uni-drawer ref="showHiddenWindow" mode="right" :mask-click="true">
      <scroll-view scroll-y="true" style="height: 100vh;">
        <view class="de-drawer">
          <view class="cu-bar bg-white">
            <view class="action">实时照片</view>
          </view>
          <view class="cu-form-group">
            <view class="grid col-4 grid-square flex-sub">
              <view class="bg-img" v-if="liveImgs.length > 0"
                    :data-url="liveImgs[0].FILEPATH">
                <image :src="liveImgs[0].IMGFILES_ID ? (baseImgPath + liveImgs[0].FILEPATH) : liveImgs[0].FILEPATH" mode="aspectFill"></image>
                <!-- 删除图片按钮 -->
                <view class="cu-tag bg-red" @tap.stop="DelImg" data-type="0">
                  <text class='cuIcon-close'></text>
                </view>
              </view>
              <!-- 上传图片按钮，仅当没有图片时显示 -->
              <view class="solids" @tap="ChooseImage"
                    v-if="liveImgs.length === 0">
                <text class='cuIcon-cameraadd'></text>
              </view>
            </view>
          </view>
        </view>
        <view class="cu-form-group" style="border: none;">
          <view class="title">签字</view>
          <button class="cu-btn bg-green shadow" @tap="modalShow = true" data-target="Modal">手写签字</button>
        </view>
        <view class="cu-bar bg-white" v-show="signImgList && signImgList.length > 0">
          <view class="action">
            签字照片
          </view>
        </view>
        <view class="cu-form-group" v-show="signImgList && signImgList.length > 0">
          <view class="grid col-4 grid-square flex-sub">
            <view style="width: 60%;" class="bg-img" v-for="(item,index) in signImgList" :key="index" @tap="ViewImage" data-type="0" :data-url="signImgList[index].filePath">
              <image :src="signImgList[index].filePath" mode="aspectFill"></image>
              <view class="cu-tag bg-red" @tap.stop="delImg" data-type="0" :data-index="index">
                <text class='cuIcon-close'></text>
              </view>
            </view>
          </view>
        </view>
        <view class="cu-modal" :class="{'show':modalShow}">
          <sign @confirm="subCanvas" @cancel="modalShow = false"></sign>
        </view>
        <view class="cu-form-group" style="margin-top: 20px; ">
          <button class="cu-btn block bg-blue margin-tb-sm" @click="submitMeetingAttendance('ACCESS_FINE_LOCATION')">提交当前位置</button>
        </view>
        <yk-authpup ref="authpup" type="top" @changeAuth="$noMultipleClicks(editLocation)" :permissionID="permissionID"></yk-authpup>
      </scroll-view>
    </uni-drawer>
    <view class="cu-form-group" v-if="pd.ATTENDANCE_STATUS === '0'">
      <view class="title">是否参会：</view>
      <button class="cu-btn round bg-blue" @click="addMeeting">参会</button>
    </view>
	</view>
</template>

<script>
	import {
		basePath,loginUser
	} from '@/common/tool.js';
  import sign from '@/components/sign/sign.vue';
  import ykAuthpup from "@/components/yk-authpup/yk-authpup"
  import {baseImgPath} from "../../../common/tool";
	export default {
    components: {
      sign,
      ykAuthpup
    },
		data() {
			return {
        baseImgPath: baseImgPath,
        modalShow: false,
        permissionID:'',
        SAFETY_MEETING_ID : '',
				varList:[],
				pd:[],
				noClick:true,
				ACCIDENTS_NAME:"",
        MEETING_TITLE:"",
        MEETING_TYPE:"",
        MEETING_ADDRESS:"",
        HOST_PERSON:"",
        MEETING_CONTENT:"",
        RECORDER:"",
        MEETING_DATE_START:"",
        MEETING_DATE_END:"",
        liveImgs: [],
        signImgList: [],
        LIVEPHOTOS: '',
        SIGNATUREPICTURE: '',
        ATTENDANCE_STATUS: '',
			}
		},
		onLoad(e){
			var _this = this;
			_this.SAFETY_MEETING_ID=e.id;
			_this.getData();

		},
		methods: {
			//跳转事件
			goToEdit(e) {
				uni.navigateTo({
					url: '/pages/application/basic-info-manage/basic-information/basic-information-edit'
				});
			},
			getData() {
				var _this = this;
				uni.showLoading({
					title: '请稍候'
				})
				uni.request({
					url: basePath + '/app/safetymeeting/goEdit',
					method: 'POST',
					dataType: 'json',
					header:{
							'Content-type':'application/x-www-form-urlencoded'
					},
					data: {
            SAFETY_MEETING_ID: _this.SAFETY_MEETING_ID,
            USER_ID:loginUser.USER_ID,
					},
					success: (res) => {
						if (res.data != null) {
							uni.hideLoading();
              _this.pd = res.data.pd;
						} else {
							uni.showToast({
								title: res.data.message,
								duration: 2000
							});
						}
					}
				});
			},
      ChooseImage() {
        var _this = this;
        uni.chooseImage({
          count: 1,
          sizeType: ['original', 'compressed'],
          sourceType: ['camera'],
          success: (res) => {
            const tempFilePath = res.tempFilePaths[0];
            uni.getLocation({
              type: 'gcj02',
              geocode: true,
              success: function (locationRes) {
                const locationAddress = `${locationRes.address.province}${locationRes.address.city}${locationRes.address.district}${locationRes.address.street}${locationRes.address.streetNum}${locationRes.address.poiName}`;
                // 创建画布
                const ctx = uni.createCanvasContext('watermarkCanvas', _this);
                ctx.drawImage(tempFilePath, 0, 0, 300, 150); // 图片大小
                ctx.setFontSize(20); // 水印字体大小
                ctx.setFillStyle('red'); // 水印字体颜色
                ctx.setFontSize(10); // 调整字体大小，适应位置信息
                // 绘制水印
                ctx.fillText(`用户名: ${loginUser.NAME}`, 10, 120); // 根据实际情况调整位置
                ctx.fillText(`当前位置: ${locationAddress}`, 10, 130); // 根据实际情况调整位置
                ctx.draw(false, () => {
                  // 将画布内容保存为图片
                  uni.canvasToTempFilePath({
                    canvasId: 'watermarkCanvas',
                    success: function(res) {
                      let img = {
                        IMGFILES_ID: '',
                        FILEPATH: res.tempFilePath // 使用带有水印的图片路径
                      };
                      _this.liveImgs = [img];
                      _this.uploadFilePromise(img.FILEPATH, 'livePhoto', locationAddress)
                          .then(() => {
                            uni.showToast({
                              title: '实时照片上传成功',
                              icon: 'success'
                            });
                          }).catch(error => {
                        uni.showToast({
                          title: '实时照片上传失败: ' + error,
                          icon: 'none'
                        });
                      });
                    }
                  }, _this);
                });
              },
              fail: function () {
                uni.showToast({
                  title: '获取位置信息失败',
                  icon: 'none'
                });
              }
            });
          }
        });
      },

      DelImg() {
        var _this = this;
        uni.showModal({
          content: '确定要删除这张图片吗？',
          cancelColor: "#000000",
          cancelText: '取消',
          confirmText: '确定',
          success: res => {
            if (res.confirm) {
              _this.liveImgs = [];
            }
          }
        })
      },
      subCanvas (e) {
        this.signImgList.splice(0, this.signImgList.length);
        this.signImgList.push(e);
        this.SIGNATUREPICTURE = e.filePath;
        this.modalShow = false;
      },
      delImg (e) {
        var _this = this;
        let i = e.currentTarget.dataset.index
        uni.showModal({
          content: '确定要删除这张图片吗？',
          cancelColor: "#000000",
          cancelText: '取消',
          confirmText: '确定',
          success: res => {
            if (res.confirm) {
              _this.signImgList.splice(i, 1)
            }
          }
        })
      },
      submitMeetingAttendance(permissionID) {
        var _this = this;
        if (this.signImgList.length === 0) {
          uni.showToast({
            title: '请上传签字图片',
            icon: 'none'
          });
          return;
        }
        this.permissionID = permissionID;
        uni.getLocation({
          type: 'gcj02',
          geocode: true,
          success: function (res) {
            const locationAddress = `${res.address.province}${res.address.city}${res.address.district}${res.address.street}${res.address.streetNum}${res.address.poiName}`;
            _this.longitude = res.longitude;
            _this.latitude = res.latitude;
            // 循环上传签字图片
            const uploadTasks = [];
            _this.signImgList.forEach(signImg => {
              uploadTasks.push(_this.uploadFilePromise(signImg.filePath, 'signPhoto', locationAddress));
            });
            Promise.all(uploadTasks).then(() => {
              // 所有图片上传完成后的处理
              uni.showToast({
                title: '全部上传成功',
                icon: 'success'
              });
              // 重新加载或更新页面数据等
              _this.getData();
              _this.$refs.showHiddenWindow.close();
            }).catch(error => {
              uni.showToast({
                title: '上传出错: ' + error,
                icon: 'none'
              });
            });
          },
          fail: function () {
            uni.showToast({
              title: '获取位置信息失败',
              icon: 'none'
            });
          }
        });
      },
      uploadFilePromise(filePath, name, locationAddress) {
        return new Promise((resolve, reject) => {
          uni.uploadFile({
            url: basePath + '/app/safetymeeting/edit',
            filePath: filePath,
            name: name,
            formData: {
              SAFETY_MEETING_ID: this.SAFETY_MEETING_ID,
              ATTENDANCE_STATUS: '1',
              LATITUDE: this.latitude,
              LONGITUDE: this.longitude,
              LOCATIONADDRESS: locationAddress
            },
            success: uploadRes => {
              const data = JSON.parse(uploadRes.data);
              if (data.result === 'success') {
                resolve(data);
              } else {
                reject(data.message);
              }
            },
            fail: () => {
              reject('上传失败');
            }
          });
        });
      },
      // 封装一个上传数据的函数，包括位置信息、实时照片和签字图片
      // formData(latitude, longitude) {
      //   uni.showLoading({
      //     title: '提交中...'
      //   });
      //   const livePhotoPath =baseImgPath + this.liveImgs[0].FILEPATH;
      //   const signPhotoPath = this.signImgList[0].filePath;
      //
      //   uni.uploadFile({
      //     url: basePath + '/app/safetymeeting/edit',
      //     filePath: livePhotoPath,
      //     name: 'livePhoto',
      //     formData: {
      //       SAFETY_MEETING_ID: this.SAFETY_MEETING_ID,
      //       SIGNATUREPICTURE: this.SIGNATUREPICTURE,
      //       ATTENDANCE_STATUS: '1',
      //     },
      //     success: uploadRes => {
      //       const data = JSON.parse(uploadRes.data);
      //       uni.hideLoading();
      //       if (data.result === 'success') {
      //         uni.showToast({
      //           title: '提交成功',
      //           icon: 'success'
      //         });
      //         this.$refs.showHiddenWindow.close();
      //       } else {
      //         uni.showToast({
      //           title: '提交失败: ' + data.message,
      //           icon: 'none'
      //         });
      //       }
      //     },
      //     fail: () => {
      //       uni.hideLoading();
      //       uni.showToast({
      //         title: '上传失败',
      //         icon: 'none'
      //       });
      //     }
      //   });
      // },
      addMeeting() {
        if (this.$refs.showHiddenWindow) {
          // 清空实时照片和签字图片数组
          this.liveImgs = [];
          this.signImgList = [];
          this.$refs.showHiddenWindow.open();
        }
        this.creatorList = [{
          NAME: loginUser.NAME,
          USER_ID: loginUser.USER_ID
        }]
        this.$refs['showHiddenWindow'].open()
        this.showHiddenWindow = true
        this.hiddenIsEdit = true
      },

      openAuth(permissionID){
        this.permissionID = permissionID;
        setTimeout(()=>{
          this.$refs['authpup'].open();
        },200)
      },
		}
	}
</script>

<style>
.dy-card {
  background-color: #fff;
  border-radius: 10upx;
  margin: 30upx;
}

.dy-card-title {
  display: flex;
  justify-content: space-between;
  border-bottom: 1px solid #eee;
  min-height: 80upx;
  line-height: 80upx;
  padding: 0 30upx;
}

.dy-card-content {
  padding: 0upx 30upx 30upx;
}

.dy-card-content-item {
  margin-top: 10upx;
}

.dy-card-content-item .title {
  display: flex;
  align-items: center;
}

/* 注释掉未使用的样式 */
/* .dy-card-content-item .title .l {
  width: 10upx;
  height: 30upx;
  border-radius: 20upx;
  background-color: #666;
  margin-right: 10upx;
} */

.dy-card-content-item .content,
.dy-card-content-item .name text {
  background-color: #F1F1F1;
  padding: 10upx 14upx;
  margin-top: 14upx;
  line-height: 1.6;
  display: inline-block; /* 如果需要显示为inline-block */
}

.delete-icon text {
  color: white; /* 图标颜色为白色 */
  font-size: 14px; /* 图标大小，根据需要调整 */
}

</style>
