<template>
  <view class="content">
    <view class="card">
      <view class="view-title">
        <u--text text="报警信息" bold></u--text>
      </view>
      <u-cell-group :border="false">
        <u-cell>
          <view slot="title" class="title">视频名称：</view>
          <view slot="value">
            {{ form.VIDEONAME }}
          </view>
        </u-cell>
        <u-cell>
          <view slot="title" class="title">报警类型：</view>
          <view slot="value">
            {{ form.TYPE }}
          </view>
        </u-cell>
        <u-cell v-show="form.UNITS_NAME">
          <view slot="title" class="title">报警时间：</view>
          <view slot="value">
            {{ form.CREATTIME }}
          </view>
        </u-cell>
        <u-cell>
          <view slot="title" class="title">报警图片：</view>
          <view slot="value">
            <u--image :showLoading="true" :src="form.IMG_PATH_SHOW"
                      width="80px" height="80px" @click="previewImage(form.IMG_PATH_SHOW)"></u--image>
          </view>
        </u-cell>
        <u-cell>
          <view slot="title" class="title">处置状态：</view>
          <view slot="value">
            {{ form.STATUS === "0" ? "待处理" : "已处理" }}
          </view>
        </u-cell>
      </u-cell-group>

    </view>
    <view class="card">
      <view class="view-title">
        <u--text text="报警处置" bold></u--text>
      </view>
      <u-cell-group :border="false">
        <u-cell>
          <view slot="title" class="title required">是否真实报警：</view>
          <view slot="value">
            <u-radio-group v-model="form.ISTRUE" placement="row" :disabled="disabled">
              <u-radio label="是" name="1"></u-radio>
              <u-radio label="否" name="2" class="ml-10"></u-radio>
            </u-radio-group>
          </view>
        </u-cell>
        <u-cell v-if="form.ISTRUE == 1">
          <view slot="title" class="title required">是否填报隐患：</view>
          <view slot="value">
            <u-radio-group v-model="form.HASHIDDEN" placement="row" :disabled="disabled">
              <u-radio label="是" name="1"></u-radio>
              <u-radio label="否" name="2" class="ml-10"></u-radio>
            </u-radio-group>
          </view>
        </u-cell>
        <u-cell v-if="form.ISTRUE == 1 && form.HASHIDDEN == 1">
          <view slot="title" class="title">隐患填报：</view>
          <view slot="value">
            <u-button type="primary" text="添加" size="mini" @click="addHidden"
                      v-if="!disabled && (!form.hiddenList || form.hiddenList.length<1)"></u-button>
          </view>
        </u-cell>
        <view class="title-none">
          <u-cell v-if="form.ISTRUE == 1 && form.HASHIDDEN == 1">
            <view slot="value" style="flex: 1">
              <uni-table border stripe emptyText="暂无更多数据">
                <uni-tr>
                  <uni-th align="center">序号</uni-th>
                  <uni-th align="center">隐患部位</uni-th>
                  <uni-th align="center">隐患描述</uni-th>
                  <uni-th align="center">操作</uni-th>
                </uni-tr>
                <uni-tr v-for="(item,index) in form.hiddenList" :key="item.HIDDEN_ID || item.id">
                  <uni-td>{{ index + 1 }}</uni-td>
                  <uni-td>{{ item.HIDDENPART }}</uni-td>
                  <uni-td>{{ item.HIDDENDESCR }}</uni-td>
                  <uni-td>
                    <view class="flex-between">
                      <u-icon name="eye-fill" @tap="showHidden(item, index)"></u-icon>
                      <u-icon name="trash-fill" class="ml-10" @tap="removeHidden(item, index)"
                              v-if="!disabled"></u-icon>
                    </view>
                  </uni-td>
                </uni-tr>
              </uni-table>
            </view>
          </u-cell>
        </view>
        <u-cell :border="false">
          <view slot="label">
            <u-button type="primary" text="提交" @click="$u.debounce(fnSubmit, 1000,true)" v-if="!disabled"></u-button>
          </view>
        </u-cell>
      </u-cell-group>
    </view>

    <u-popup :show="popupShow" @close="popupShow = false" mode="right" :closeOnClickOverlay="false"
             :customStyle="{width:'85vw',overflowY:'auto'}">
      <view class="card">
        <u-cell-group :border="false">
          <u-cell>
            <view slot="title" class="title required">隐患照片：</view>
            <view slot="label" class="mt-10">
              <u--image :showLoading="true" :src="form.IMG_PATH_SHOW"
                        width="80px" height="80px" @click="previewImage(form.IMG_PATH_SHOW)"></u--image>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">隐患描述：</view>
            <view slot="label" class="mt-10">
              <u--textarea v-model="hiddenForm.HIDDENDESCR" placeholder="请输入隐患描述"
                           :disabled="popupDisabled"></u--textarea>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">隐患部位：</view>
            <view slot="value">
              <u--input v-model="hiddenForm.HIDDENPART" border="none" placeholder="请输入隐患部位" inputAlign="right"
                        :disabled="popupDisabled"></u--input>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">隐患级别：</view>
            <view slot="value">
              <text @click="showTree('tkitree3')">{{ hiddenForm.HIDDENLEVEL_NAME || '请选择' }}</text>
              <tki-tree ref="tkitree3" :range="hiddenLevelTreeList" rangeKey="name" selectParent children-name="nodes"
                        @confirm="confirmTree($event,'hiddenLevelTreeList')"/>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">隐患类型：</view>
            <view slot="value">
              <text @click="showTree('tkitree4')">{{ hiddenForm.HIDDENTYPE_NAME || '请选择' }}</text>
              <tki-tree ref="tkitree4" :range="hiddenTypeTreeList" rangeKey="name" selectParent children-name="nodes"
                        @confirm="confirmTree($event,'hiddenTypeTreeList')"/>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">隐患处置：</view>
            <view slot="value">
              <u-radio-group v-model="hiddenForm.RECTIFICATIONTYPE" placement="row" :disabled="popupDisabled">
                <!--                <u-radio label="立即整改" name="1"></u-radio>-->
                <u-radio label="限期整改" name="2" class="ml-10"></u-radio>
              </u-radio-group>
            </view>
          </u-cell>
          <u-cell v-if="hiddenForm.RECTIFICATIONTYPE === '2'">
            <view slot="title" class="title required">整改期限：</view>
            <view slot="value">
              <text @click="popupDisabled ? null : RECTIFICATIONDEADLINEShow = true">
                {{ hiddenForm.RECTIFICATIONDEADLINE || '请选择' }}
              </text>
              <u-datetime-picker :show="RECTIFICATIONDEADLINEShow" :value="hiddenForm.RECTIFICATIONDEADLINE"
                                 :minDate="Number(1970)"
                                 @cancel="RECTIFICATIONDEADLINEShow = false"
                                 @confirm="RECTIFICATIONDEADLINEConfirm"></u-datetime-picker>
            </view>
          </u-cell>
          <u-cell v-if="hiddenForm.RECTIFICATIONTYPE === '1'">
            <view slot="title" class="title required">整改照片：</view>
            <view slot="label" class="mt-10">
              <u-upload
                  :disabled="popupDisabled"
                  :deletable="!popupDisabled"
                  uploadIcon="plus"
                  :fileList="hiddenForm.zgImgs"
                  @afterRead="afterRead2"
                  @delete="deletePic2"
                  multiple
                  :maxCount="4"
              ></u-upload>
            </view>
          </u-cell>
          <u-cell v-if="hiddenForm.RECTIFICATIONTYPE === '1'">
            <view slot="title" class="title required">整改描述：</view>
            <view slot="label" class="mt-10">
              <u--textarea v-model="hiddenForm.RECTIFYDESCR" placeholder="请输入整改描述"
                           :disabled="popupDisabled"></u--textarea>
            </view>
          </u-cell>
          <u-cell>
            <view slot="title" class="title required">整改部门：</view>
            <view slot="value">
              <text @click="showTree('tkitree5')">{{ hiddenForm.RECTIFICATIONDEPT_NAME || '请选择' }}</text>
              <tki-tree ref="tkitree5" :range="rectificationDepartmentTreeList" rangeKey="UNITS_NAME" selectParent
                        @confirm="confirmTree($event,'rectificationSiteuserColumns')"/>
            </view>
          </u-cell>
          <u-cell v-show="hiddenForm.RECTIFICATIONDEPT_NAME">
            <view slot="title" class="title required">整改人：</view>
            <view slot="value">
              <text @click="popupDisabled ? null : rectificationSiteuserShow = true">
                {{ hiddenForm.RECTIFICATIONOR_NAME || '请选择' }}
              </text>
              <u-picker :show="rectificationSiteuserShow" :columns="rectificationSiteuserColumns" keyName="NAME"
                        @cancel="rectificationSiteuserShow = false"
                        @confirm="rectificationSiteuserConfirmPicker"></u-picker>
            </view>
          </u-cell>
          <u-cell :border="false">
            <view slot="label" class="flex-between">
              <view class="flex1">
                <u-button type="info" text="取消" @click="popupClose"></u-button>
              </view>
              <view class="flex1 ml-10">
                <u-button type="primary" text="保存" @click="popupSave"
                          v-if="!popupDisabled"></u-button>
              </view>
            </view>
          </u-cell>
        </u-cell-group>
      </view>
    </u-popup>
  </view>
</template>

<script>
import {
  getKeyProjectsListAllPersonnel,
  getHiddenLevel,
  getHiddenType,
  getKeyProjectsListAllUnits,
  getInspectionDepartment,
  getInspectionType,
  getInspectors,
  setImgFilesAdd,
  setKeyProjectsAIWarningAdd,
  setVideoAdd,
  getKeyProjectsAIWarningView
} from "../../../api";

export default {
  data() {
    return {
      form: {},
      AIWARNING_ID: '',
      OUTSOURCED_ID: '',
      disabled: false,
      popupShow: false,
      popupDisabled: false,
      RECTIFICATIONDEADLINEShow: false,
      hiddenForm: {
        id: Math.random(),
        hiddenImgs: [],
        zgImgs: [],
        hiddenVideos: [],
        HIDDENDESCR: '',
        HIDDENPART: '',
        HIDDENLEVEL_NAME: '',
        HIDDENLEVEL: '',
        HIDDENTYPE_NAME: '',
        HIDDENTYPE: '',
        SOURCE: '4',
        CORPINFO_ID: '',
        HIDDENFINDDEPT: '',
        RECTIFICATIONTYPE: '2',
        RECTIFICATIONDEADLINE: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
        RECTIFYDESCR: '',
        RECTIFICATIONDEPT: '',
        RECTIFICATIONDEPT_NAME: '',
        RECTIFICATIONOR_NAME: '',
        RECTIFICATIONOR: '',
      },
      hiddenFormRules: {
        'hiddenImgs': {required: true, message: '请上传隐患照片'},
        'HIDDENDESCR': {required: true, message: '请输入隐患描述'},
        'HIDDENPART': {required: true, message: '请输入隐患部位'},
        'HIDDENLEVEL_NAME': {required: true, message: '请选择隐患级别'},
        'HIDDENTYPE_NAME': {required: true, message: '请选择隐患类型'},
        // 'RECTIFICATIONDEADLINE': {required: true, message: '请选择整改期限'},
        // 'RECTIFYDESCR': {required: true, message: '请输入整改描述'},
        'RECTIFICATIONDEPT': {required: true, message: '请选择整改部门'},
        'RECTIFICATIONOR': {required: true, message: '请选择整改人'},
      },
      hiddenLevelTreeList: [
        {id: 'hiddenLevel1004', name: '轻微隐患'},
        {id: 'hiddenLevel1002', name: '一般隐患'},
      ],
      hiddenTypeTreeList: [],
      creatorList: [],
      delHiddens: [],
      delHiddenFiles: [],
      rectificationSiteuserColumns: [],
      rectificationSiteuserShow: false,
      creatorShow: false,
      modalShow: false,
      videoUrl: '',
    }
  },
  async onLoad(event) {
    this.AIWARNING_ID = event.AIWARNING_ID
    this.OUTSOURCED_ID = event.OUTSOURCED_ID
    this.disabled = event.type === 'view';
    await this.fnGetKeyProjectsAiWarningView()
    if (event.type === 'edit') {
      await this.fnGetKeyProjectsListAllUnits()
      await this.fnGetHiddenType()
    }
  },
  computed: {
    userInfo() {
      return this.$store.getters.getUserInfo
    }
  },
  methods: {
    async fnGetKeyProjectsListAllUnits() {
      let resData = await getKeyProjectsListAllUnits({OUTSOURCED_ID: this.OUTSOURCED_ID});
      this.inspectedDepartmentTreeList = resData.varList;
      this.rectificationDepartmentTreeList = resData.varList;
    },
    async fnGetInspectionDepartment() {
      let resData = await getInspectionDepartment();
      this.inspectionDepartmentTreeList = JSON.parse(resData.zTreeNodes);
    },
    async fnGetHiddenType() {
      let resData = await getHiddenType();
      this.hiddenTypeTreeList = JSON.parse(resData.zTreeNodes);
    },
    async fnGetInspectionType() {
      let resData = await getInspectionType();
      this.inspectionTypeTreeList = JSON.parse(resData.zTreeNodes);
    },
    async fnGetKeyProjectsListAllPersonnel(detpId) {
      let resData = await getKeyProjectsListAllPersonnel({'UNITS_ID': detpId});
      return resData.varList;
    },
    async fnGetInspectors(detpId) {
      let resData = await getInspectors({'DEPARTMENT_ID': detpId});
      return resData.userList;
    },
    async fnGetKeyProjectsAiWarningView() {
      let resData = await getKeyProjectsAIWarningView({AIWARNING_ID: this.AIWARNING_ID})
      for (let i = 0; i < resData.pd.hiddenList.length; i++) {
        for (let j = 0; j < resData.pd.hiddenList[i].hiddenImgs.length; j++) {
          resData.pd.hiddenList[i].hiddenImgs[j].url = this.$store.state.filePath + resData.pd.hiddenList[i].hiddenImgs[j].FILEPATH
        }
      }
      this.form = resData.pd
      this.form.IMG_PATH_SHOW = this.$store.state.filePath + this.form.IMG_PATH
    },
    previewImage(current) {
      let urls = []
      urls.push(current)
      uni.previewImage({
        urls,
        current
      });
    },
    showTree(ref, type) {
      if (this.popupDisabled) return;
      if (this.disabled) return;
      if (type === 'arr') this.$refs[ref][0]._show();
      else this.$refs[ref]._show()
    },
    confirmTree(e, list, index) {
      if (list === 'inspectedSiteuserColumns') {
        this.form.UNITS_ID = e[0].UNITS_ID
        this.form.UNITS_NAME = e[0].UNITS_NAME
        this.form.PERSON_NAME = ''
        this.form.PERSONNELMANAGEMENT_ID = ''
        this.fnGetKeyProjectsListAllPersonnel(e[0].UNITS_ID).then(res => {
          this.$set(this.inspectedSiteuserColumns, 0, res)
        })
      }
      if (list === 'inspectionTypeTreeList') {
        this.form.INSPECTION_TYPE = e[0].id
        this.form.INSPECTION_TYPE_NAME = e[0].name
      }
      if (list === 'hiddenLevelTreeList') {
        this.hiddenForm.HIDDENLEVEL = e[0].id
        this.hiddenForm.HIDDENLEVEL_NAME = e[0].name
      }
      if (list === 'hiddenTypeTreeList') {
        this.hiddenForm.HIDDENTYPE = e[0].id
        this.hiddenForm.HIDDENTYPE_NAME = e[0].name
      }
      if (list === 'rectificationSiteuserColumns') {
        this.hiddenForm.RECTIFICATIONDEPT = e[0].UNITS_ID
        this.hiddenForm.RECTIFICATIONDEPT_NAME = e[0].UNITS_NAME
        this.hiddenForm.RECTIFICATIONOR_NAME = ''
        this.hiddenForm.RECTIFICATIONOR = ''
        this.fnGetKeyProjectsListAllPersonnel(e[0].UNITS_ID).then(res => {
          this.$set(this.rectificationSiteuserColumns, 0, res)
        })
      }
    },
    inspectedSiteuserConfirmPicker(e) {
      this.form.PERSON_NAME = e.value[0].NAME
      this.form.PERSONNELMANAGEMENT_ID = e.value[0].PERSONNELMANAGEMENT_ID
      this.inspectedSiteuserShow = false;
    },
    rectificationSiteuserConfirmPicker(e) {
      this.hiddenForm.RECTIFICATIONOR_NAME = e.value[0].NAME
      this.hiddenForm.RECTIFICATIONOR = e.value[0].PERSONNELMANAGEMENT_ID
      this.rectificationSiteuserShow = false;
    },
    inspectionTimeStartConfirm(e) {
      this.form.INSPECTION_TIME_START = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
      this.inspectionTimeStartShow = false;
    },
    inspectionTimeEndConfirm(e) {
      this.form.INSPECTION_TIME_END = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
      this.inspectionTimeEndShow = false;
    },
    RECTIFICATIONDEADLINEConfirm(e) {
      this.hiddenForm.RECTIFICATIONDEADLINE = uni.$u.timeFormat(e.value, 'yyyy-mm-dd hh:MM')
      this.RECTIFICATIONDEADLINEShow = false;
    },
    addSituation() {
      this.form.situationList.push({id: Math.random(), INSPECTION_SITUATION_ID: '', SITUATION: ''})
    },
    removeSituation(item, index) {
      uni.showModal({
        title: '提示',
        cancelText: '确认',
        confirmText: '取消',
        content: '确定删除检查情况吗？',
        success: (res) => {
          if (res.cancel) {
            this.form.situationList.splice(index, 1)
            if (item.INSPECTION_SITUATION_ID) {
              this.delSituations.push(item.INSPECTION_SITUATION_ID)
            }
          }
        }
      });
    },
    async fnSubmit() {
      uni.showLoading({
        title: '加载中'
      });
      if (!this.form.ISTRUE) {
        uni.showToast({
          title: "请选择是否真实报警",
          icon: "none"
        })
        return;
      } else if (this.form.ISTRUE == 1) {
        if (!this.form.HASHIDDEN) {
          uni.showToast({
            title: "请选择是否填报隐患",
            icon: "none"
          })
          return;
        } else if (this.form.HASHIDDEN == 1) {
          if (!this.form.hiddenList || this.form.hiddenList.length < 1) {
            uni.showToast({
              title: "请填报隐患",
              icon: "none"
            })
            return;
          }
        } else if (this.form.HASHIDDEN == 2) {
          this.form.hiddenList = []
        }
      } else if (this.form.ISTRUE == 2) {
        this.form.HASHIDDEN = 2
        this.form.hiddenList = []
      }
      let resData = await setKeyProjectsAIWarningAdd({
        ...this.form,
        HIDDENJSON: JSON.stringify(this.form.hiddenList),
        OPERATOR: this.userInfo.USER_ID,
        loading: false
      })
      uni.hideLoading()
      uni.showToast({
        title: '添加成功',
      })
      uni.$u.route({
        type: 'navigateBack'
      })
    },
    addHidden() {
      this.clearHiddenForm()
      this.creatorList = [[{NAME: this.userInfo.NAME, USER_ID: this.userInfo.USER_ID}]]
      this.popupShow = true
      this.popupDisabled = false
    },
    showHidden(item) {
      this.clearHiddenForm()
      this.creatorList = [[]]
      this.hiddenForm = item
      this.popupShow = true
      this.popupDisabled = true
    },
    clearHiddenForm() {
      this.hiddenForm = {
        id: Math.random(),
        hiddenImgs: [],
        zgImgs: [],
        hiddenVideos: [],
        HIDDENDESCR: '',
        HIDDENPART: '',
        HIDDENLEVEL_NAME: '',
        HIDDENLEVEL: '',
        HIDDENTYPE_NAME: '',
        HIDDENTYPE: '',
        SOURCE: '4',
        CORPINFO_ID: '',
        HIDDENFINDDEPT: '',
        RECTIFICATIONTYPE: '2',
        RECTIFICATIONDEADLINE: uni.$u.timeFormat(new Date(), 'yyyy-mm-dd hh:MM'),
        RECTIFICATIONDEPT: '',
        RECTIFYDESCR: '',
        RECTIFICATIONDEPT_NAME: '',
        RECTIFICATIONOR_NAME: '',
        RECTIFICATIONOR: '',
      }
    },
    removeHidden(item, index) {
      uni.showModal({
        title: '提示',
        cancelText: '确认',
        confirmText: '取消',
        content: '确定移除发现问题吗？',
        success: (res) => {
          if (res.cancel) {
            this.form.hiddenList.splice(index, 1);
            if (item.HIDDEN_ID) {
              this.delHiddens.push(item.HIDDEN_ID)
            }
          }
        }
      });
    },
    afterRead(event) {
      this.hiddenForm.hiddenImgs = [...this.hiddenForm.hiddenImgs, ...event.file]
    },
    deletePic(event) {
      if (this.hiddenForm.hiddenImgs[event.index].IMGFILES_ID) {
        this.delHiddenFiles.push(this.hiddenForm.hiddenImgs[event.index].FILEPATH)
      }
      this.hiddenForm.hiddenImgs = this.hiddenForm.hiddenImgs.filter(item => item.url !== event.file.url)
    },
    afterRead1(event) {
      this.hiddenForm.hiddenVideos = [...this.hiddenForm.hiddenVideos, ...event.file]
    },
    deletePic1(event) {
      this.hiddenForm.hiddenVideos = this.hiddenForm.hiddenVideos.filter(item => item.url !== event.file.url)
    },
    afterRead2(event) {
      this.hiddenForm.zgImgs = [...this.hiddenForm.zgImgs, ...event.file]
    },
    deletePic2(event) {
      this.hiddenForm.zgImgs = this.hiddenForm.zgImgs.filter(item => item.url !== event.file.url)
    },
    popupClose() {
      this.popupShow = false
    },
    popupSave() {
      for (const key in this.hiddenFormRules) {
        if (!this.hiddenForm[key]) {
          uni.showToast({
            title: this.hiddenFormRules[key].message,
            icon: "none"
          })
          return;
        }
      }
      if (this.hiddenForm.RECTIFICATIONTYPE === '2') {
        if (!this.hiddenForm.RECTIFICATIONDEADLINE) {
          uni.showToast({
            title: '请选择整改期限',
            icon: "none"
          })
          return;
        }
      }
      this.hiddenForm.SOURCE = 4
      this.form.hiddenList.push(this.hiddenForm)
      this.popupClose()
    },
    previewVideo(videoUrl) {
      this.modalShow = true;
      this.videoUrl = videoUrl;
    },
  },
}
</script>

<style>
</style>
