<template>
  <view class="container">
    <view class="card">
      <view class="card">
        <u-form label-position="left" label-width="auto">
          <view class="mt-10 flex-end">
            <u-button custom-style="width: 100rpx;margin:0" type="primary" size="mini" text="添加" @click="fnAddHotWorkOperatorList()"/>
          </view>
          <view v-for="(item, index) in hotWorkOperatorList" :key="item.id" style="position: relative;border: 1px dashed #ccc;padding: 20rpx 20rpx 20rpx 40rpx;" class="mt-10">
            <u-form-item label="动火操作人部门" prop="DEPARTMENT_NAME" required @click="fnSelectDepartment(index)">
              <view class="select_content">
                <u-input v-model="item.DEPARTMENT_NAME || '请选择'" border="none" input-align="right" readonly />
                <u-icon name="arrow-right"></u-icon>
              </view>
            </u-form-item>
            <u-line/>
            <u-form-item label="动火操作人" prop="USER_NAME" required @click="fnSelectUser(index)">
              <view class="select_content">
                <u-input v-model="item.USER_NAME || '请选择'" border="none" input-align="right" readonly/>
                <u-icon name="arrow-right"></u-icon>
              </view>
            </u-form-item>
            <u-line/>
            <u-icon v-if="index !== 0" name="close-circle-fill" color="#ff2929" size="20" custom-style="position: absolute;right: -20rpx;top: -20rpx" @click="hotWorkOperatorList.splice(index, 1)"/>
          </view>
          <view class="mt-10 flex-between">
            <u-button type="primary" shape="circle" text="下一步" :throttle-time="1000" @click="fnSubmit()"/>
          </view>
        </u-form>
      </view>
    </view>
    <u-picker
        :key="picker.key"
        :show="picker.show"
        :columns="picker.columns"
        :default-index="picker.defaultIndex"
        key-name="NAME"
        @confirm="fnPickerConfirm"
        @cancel="fnPickerCancel"
    />
  </view>
</template>

<script>
import { setSubmitForm} from "@/utils/submitHomeworkProcess";
import {getUserList} from "@/api";

export default {
  components: {},
  data() {
    return {
      form: {},
      formItems: {},
      taskId: '',
      hotWorkOperatorList: [],
      picker: {
        show: false,
        columns: [],
        key: "",
        defaultIndex: [0]
      }
    }
  },
  mounted() {
    const eventChannel = this.getOpenerEventChannel();
    eventChannel.on('data', (data) => {
      this.form = data.form;
      this.formItems = data.formItems;
      this.taskId = data.taskId;
      this.hotWorkOperatorList = JSON.parse(JSON.stringify(data.form.hotWorkOperatorList));
      if (this.hotWorkOperatorList.length === 0) {
        this.fnAddHotWorkOperatorList();
      } else {
        for (let i = 0; i < this.hotWorkOperatorList.length; i++) {
          for (let i = 0; i < this.hotWorkOperatorList.length; i++) {
            this.fnGetUserList(this.hotWorkOperatorList[i], i);
          }
        }
      }
    })
  },
  methods: {
    fnAddHotWorkOperatorList() {
      this.hotWorkOperatorList.push({
        DEPARTMENT_NAME: "",
        DEPARTMENT_ID: "",
        USER_NAME: "",
        USER_ID: "",
        TYPE: "",
        id: uni.$u.guid(),
        columns: [],
      });
    },
    fnSelectDepartment(index) {
      uni.navigateTo({
        url: `/pages/eight_assignments/select_department?CORP_ID=${this.form.CORP_ID}`,
        events: {
          confirm: (event) => {
            this.hotWorkOperatorList[index].DEPARTMENT_NAME = event.DEPARTMENT_NAME;
            this.hotWorkOperatorList[index].DEPARTMENT_ID = event.DEPARTMENT_ID;
            this.hotWorkOperatorList[index].USER_NAME = "";
            this.hotWorkOperatorList[index].USER_ID = "";
            this.hotWorkOperatorList[index].TYPE = event.TYPE;
            this.fnGetUserList(event, index);
          },
        },
      });
    },
    fnSelectUser(index) {
      this.picker.key = index;
      this.picker.columns = this.hotWorkOperatorList[index].columns;
      this.picker.defaultIndex = [0];
      if (this.picker.columns[0].length === 0) {
        uni.$u.toast("没有选择部门或当前部门没有人员");
        return;
      }
      for (let i = 0; i < this.picker.columns[0].length; i++) {
        if (
            this.picker.columns[0][i].USER_ID ===
            this.hotWorkOperatorList[index].USER_ID
        ) {
          this.picker.defaultIndex = [i];
          break;
        }
      }
      this.picker.show = true;
    },
    async fnSubmit() {
      for (let i = 0; i < this.hotWorkOperatorList.length; i++) {
        if (
            !this.hotWorkOperatorList[i].DEPARTMENT_ID ||
            !this.hotWorkOperatorList[i].USER_ID
        ) {
          uni.$u.toast("请完善动火操作人信息");
          return;
        }
      }
      await setSubmitForm({
        form: {...this.form, hotWorkOperatorList: this.hotWorkOperatorList},
        formItems: this.formItems,
        TYPE: "hotWork",
        CORP_ID: this.form.CORP_ID,
        EW_RU_TASK_ID: this.taskId,
      });
    },
    async fnGetUserList({DEPARTMENT_ID, TYPE}, index) {
      const resData = await getUserList({DEPARTMENT_ID, TYPE});
      for (let i = 0; i < resData.list.list.length; i++) {
        resData.list.list[i].NAME = resData.list.list[i].name || resData.list.list[i].NAME;
        resData.list.list[i].USER_ID = resData.list.list[i].user_ID || resData.list.list[i].USER_ID;
      }
      this.hotWorkOperatorList[index].columns = [resData.list.list];
    },
    fnPickerConfirm(event){
      this.hotWorkOperatorList[this.picker.key].USER_ID = event.value[0].USER_ID;
      this.hotWorkOperatorList[this.picker.key].USER_NAME = event.value[0].NAME;
      this.fnPickerCancel();
    },
    fnPickerCancel(){
      this.picker.show = false;
    }
  },
}


</script>

<style scoped lang="scss">
.select_content{
  display: flex;
  align-items: center;
}
</style>