<template>
  <div class="addThreeMeeting">
    <ai-detail>
      <ai-title slot="title" :title="`${form.id?'编辑':'添加'}三会一课`" isShowBack @onBackClick="$parent.goBack()"
                isShowBottomBorder/>
      <template #content>
        <ai-card>
          <template #content>
            <el-form :model="form" label-width="100px" ref="basicForm" :rules="fromRules" size="small">
              <ai-title title="基本信息" isShowBottomBorder/>
              <el-form-item label="会议分类：" prop="meetingClassification">
                <el-checkbox-group v-model="form.meetingClassification">
                  <el-checkbox :label="op.dictValue" v-for="(op,j) in dict.getDict('meetingClassification')" :key="j">
                    {{ op.dictName }}
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
              <el-form-item prop="meetingAgenda" label="会议名称：" ref="fromTitle">
                <el-input
                    v-model="form.meetingAgenda"
                    placeholder="限30字"
                    clearable
                    :maxLength="30"
                />
              </el-form-item>
              <el-form-item prop="appThreeMeetingOrganizationList" label="与会组织："
                            ref="appThreeMeetingOrganizationList">
                <div class="organ" @click="showDialogVisible()">
                          <span v-if="form.appThreeMeetingOrganizationList.length">
                            <span v-for="(item,i) in form.appThreeMeetingOrganizationList" :key="item.name"
                                  class="organzation">{{ item.name || item.organizationName }}
                                <span class="iconfont iconOverrule" @click.stop="delate(i)"></span>
                            </span>
                          </span>
                  <span v-else>请选择</span>
                </div>
              </el-form-item>
              <el-form-item prop="isOnline" label="举办方式：">
                <!--            <el-radio label="1" v-model="form.isOnline">线上举办</el-radio>-->
                <el-radio label="0" v-model="form.isOnline">线下举办</el-radio>
              </el-form-item>
              <el-form-item prop="meetingAddress" label="会议地点：" v-if="form.isOnline==0">
                <el-input
                    v-model="form.meetingAddress"
                    placeholder="限60字"
                    clearable
                    :maxLength="60"
                />
              </el-form-item>
              <el-row type="flex" justify="space-between">
                <el-form-item prop="startTime" label="开始时间：" ref="startTime">
                  <el-date-picker @change="dataChange()"
                                  value-format="yyyy-MM-dd HH:mm:ss"
                                  type="datetime"
                                  v-model="form.startTime"
                                  placeholder="请选择..."
                  />
                </el-form-item>
                <el-form-item prop="endTime" label="结束时间：" ref="endTime">
                  <el-date-picker @change="dataChange()"
                                  value-format="yyyy-MM-dd HH:mm:ss"
                                  type="datetime"
                                  v-model="form.endTime"
                                  placeholder="请选择..."
                                  :disabled="!Boolean(form.startTime)"
                  ></el-date-picker>
                </el-form-item>
              </el-row>
              <el-form-item label="会议说明：" prop="meetingDescription" calss="uedtor" style="margin-top: 16px;">
                <ai-editor v-model="form.meetingDescription" :instance="instance"/>
              </el-form-item>
              <el-form-item label="附件：">
                <ai-uploader :instance="instance" v-model="form.fileList" fileType="file"
                             :limit="9"></ai-uploader>
              </el-form-item>
              <ai-title title="人员设置" isShowBottomBorder/>
              <div class="person">
                <el-form-item label="与会人员：" prop="participantList" label-width="106px" ref="participantList">
                  <div class="select-person" v-for="(item,index) in form.participantList" :key="item.name"
                       style="margin-bottom: 36px;">
                    <div class="person-pictrue" style="cursor: pointer;" @click="selectHost(index)">
                      <img :src="item.avatarUrl" alt="" v-if="item.avatarUrl">
                      <div
                          style="overflow: hidden;width:40px;height: 40px;lineHeight: 40px;white-space: nowrap;background-color:#2266FF;border-radius:50%;"
                          v-else>{{ item.name }}
                      </div>
                      <span class="host">主持人</span>
                      <span class="iconfont del-icon iconOverrule" @click.stop="deletePerson(index)"></span>
                    </div>
                    <span class="person-name">{{ item.name }}</span>
                    <span style="position: absolute;left: 0;top: 60px;color: #2266FF;" v-if="item.isHost">
                          <span class="iconfont iconzxjyzdls" style="color: #8899BB;"></span>
                          <span style="font-size: 12px;">主持人</span>
                        </span>
                  </div>
                  <ai-party-member
                      :instance="instance"
                      customCliker
                      dialogTitle="添加人员"
                      v-model="form.participantList"
                      :key="partyKey"
                      customOrg
                      v-if="isShowChooseUser && partyOrgIdList.length"
                      :disable="hostDisable"
                      :area-id="areaId"
                      :partyList="partyOrgIdList"
                      :partyOrgList="form.appThreeMeetingOrganizationList"
                      @change="handleSelectParty">
                      <div class="select-person add-person">
                        <div class="add-icon"><span class="el-icon-plus icon-add"></span></div>
                        <span class="person-name">选择</span>
                      </div>
                  </ai-party-member>
                </el-form-item>
                <span class="tips">*从党员用户中选择，必须设置一名主持人(点击与会人员头像设置或变更主持人)</span>
              </div>
              <div class="person">
                <el-form-item label="纪要负责人：" label-width="106px" style="width:100%;margin-bottom: 0;"
                              ref="recorderList">
                  <ai-person-select :customClicker="true" :chooseUserList="form.recorderList" customRightText
                                    :instance="instance" url="/admin/user/pageForWeb" headerTitle="人员列表"
                                    dialogTitle="选择" @selectPerson="changeRecorderList">
                    <template v-slot:option="{ item }">
                      <span class="iconfont iconProlife">{{ item.name }}</span>
                      <span>{{ item.phone }}</span>
                    </template>
                  </ai-person-select>
                </el-form-item>
                <span class="tips">*从系统用户中选择，拥有签到管理权限</span>
              </div>
              <ai-title title="会议投票设置" isShowBottomBorder/>
              <el-form-item label="是否投票：">
                <el-radio v-for="op in dict.getDict('yesOrNo')"
                          :key="op.dictValue" :label="op.dictValue" v-model="form.isVote">
                  {{ op.dictName }}
                </el-radio>
              </el-form-item>
              <template v-if="form.isVote==1">
                <el-form-item label="投票主题：" prop="voteTopic">
                  <el-input type="textarea" v-model="form.voteTopic" maxlength="80" show-word-limit rows="4"/>
                </el-form-item>
                <el-form-item label="投票选项：" required>
                  <el-radio label="1" v-model="voteOps">同意/不同意</el-radio>
                </el-form-item>
                <el-form-item label="投票形式：" prop="anonymous">
                  <ai-select v-model="form.anonymous" :selectList="dict.getDict('ThreeMeetingAnonymous')"/>
                </el-form-item>
                <el-form-item label="截止时间：" prop="voteDeadline">
                  <el-date-picker v-model="form.voteDeadline" type="datetime" placeholder="请选择"
                                  value-format="yyyy-MM-dd HH:mm:ss"/>
                </el-form-item>
              </template>
              <ai-title title="其他设置" isShowBottomBorder/>
              <el-form-item v-if="form.isOnline==0" label="签到方式：" prop="signMethod">
                <el-radio-group v-model="form.signMethod">
                  <el-radio label="1">签到</el-radio>
                  <el-radio label="0">不签到</el-radio>
                </el-radio-group>
              </el-form-item>
              <div class="person" v-if="form.signMethod=='1'">
                <el-form-item label="签到负责人：" label-width="106px" style="width:100%" ref="chargeOfSignInList">
                  <ai-person-select :customClicker="true" :chooseUserList="form.chargeOfSignInList"
                                    :instance="instance" customRightText url="/admin/user/pageForWeb"
                                    headerTitle="人员列表" dialogTitle="选择" :isMultiple="true"
                                    @selectPerson="changeCharge">
                    <template v-slot:option="{ item }">
                      <span class="iconfont iconProlife">{{ item.name }}</span>
                      <span>{{ item.phone }}</span>
                    </template>
                  </ai-person-select>
                </el-form-item>
                <span class="tips">*从系统用户中选择，拥有签到管理权限</span>
              </div>
              <div class="areaList" v-if="form.signMethod=='1'">
                <el-form-item label="签到时间：" style="width:100%;"
                              :prop="form.signMethod=='1'?'meetingBefore':'meetingBeforeCo'">
                  会议开始时间前
                  <el-input v-model="form.meetingBefore" class="time-input"
                            oninput="value=value.replace(/[^\d]/g,'')"></el-input>
                  分钟，至会议开始时间后
                  <el-input v-model="form.meetingAfter" class="time-input"
                            oninput="value=value.replace(/[^\d]/g,'')"></el-input>
                  分钟，可进行签到。
                  <P>
                    可签到时间为
                    <span style="color:#5088FF"
                          v-if="form.meetingBefore&&form.meetingAfter&&form.startTime">({{ signStart }} ~ {{
                        signEnd
                      }})</span>
                    <span style="color:#5088FF" v-else>-</span>
                  </P>
                </el-form-item>
              </div>
              <el-form-item label="提醒方式：" style="width:100%;" prop="reminderMethod">
                <el-checkbox-group v-model="form.reminderMethod">
                  <el-checkbox label="5" style="width: 100%;"
                               :disabled="form.reminderMethod.indexOf('0')>-1 || form.reminderMethod.indexOf('1')>-1||form.reminderMethod.indexOf('2')>-1||form.reminderMethod.indexOf('3')>-1 || form.reminderMethod.indexOf('4')>-1">
                    不提醒
                  </el-checkbox>
                  <el-checkbox label="0" style="width: 16%;" :disabled="form.reminderMethod.indexOf('5') > -1">立即通知
                  </el-checkbox>
                  <el-checkbox label="1" style="width: 16%;" :disabled="form.reminderMethod.indexOf('5') > -1">提前10分钟
                  </el-checkbox>
                  <el-checkbox label="2" style="width: 16%;" :disabled="form.reminderMethod.indexOf('5') > -1">提前30分钟
                  </el-checkbox>
                  <el-checkbox label="3" style="width: 16%;" :disabled="form.reminderMethod.indexOf('5') > -1">提前1小时
                  </el-checkbox>
                  <el-checkbox label="4" style="width: 16%;" :disabled="form.reminderMethod.indexOf('5') > -1">提前2小时
                  </el-checkbox>
                </el-checkbox-group>
              </el-form-item>
            </el-form>
          </template>
        </ai-card>
      </template>
      <template #footer>
        <el-button size="small" @click="confirm()">取消</el-button>
        <el-button type="primary" size="small" @click="confirm('1')">立即发布</el-button>
        <el-button size="small" @click="confirm('0')">保存</el-button>
      </template>
    </ai-detail>
    <el-dialog width="644px" title="选择党组织" :visible.sync="dialogVisible" class="select-party">
      <div>
        <el-row type="flex" justify="space-between">
          <el-row class="search-panel" type="flex" justify="space-between">
            <div class="add-item" style="padding-bottom:3px;overflow-x: hidden">
              <p class="add_top">
                <span>党组织</span>
                <el-input placeholder="党组织名称" size="small" style="width:166px;" clearable
                          suffix-icon="el-icon-search"
                          v-model="filterText"></el-input>
              </p>
              <div class="tree_list">
                <el-tree
                    :data="treeData"
                    show-checkbox
                    node-key="id"
                    ref="partyTree"
                    :filter-node-method="filterNode"
                    @check-change="handleCheckChange"
                    :highlight-current="true"
                    :props="defaultProps">
                </el-tree>
              </div>
            </div>
          </el-row>
          <div class="selected-people add-item">
            <p class="add_top">
              <span>已选择</span>
              <el-button icon="iconfont iconDelete" size="mini"
                         @click="clearSelect()">清空
              </el-button>
            </p>
            <div class="add_tag" v-if="selectParty.length" style="width:100%;">
              <el-tag v-for="(item,i) in selectParty" :disable-transitions="true" :key="item.name" type="info">
                {{ item.name }}
                <span class="iconfont iconOverrule icon-color89B" style="float: right;"
                      @click.stop="cancelSelect(i)"></span>
              </el-tag>
            </div>
            <div class="add_tag" v-else
                 style="display:flex;align-items:center;justify-content:center;width:100%;">
              <span>暂无数据</span>
            </div>
          </div>
        </el-row>
      </div>
      <div slot="footer" style="text-align: center;">
        <el-button style="width:92px" size="small" class="delete-btn" @click="dialogVisible=false">取消
        </el-button>
        <el-button style="width:92px" size="small" type="primary"
                   @click="dialogVisible=false,confirmSelect()">确认
        </el-button>
      </div>
    </el-dialog>
  </div>
</template>

<script>
import {mapState} from "vuex";
import moment from 'dayjs';

export default {
  name: "add",
  props: {
    instance: Function,
    dict: Object,
    permissions: Function,
    detail: Object,
  },
  computed: {
    ...mapState(["user"]),
    hostDisable() {
      if (!this.form.meetingUser) return []
      const list = [
        ...this.form.chargeOfSignInList,
        ...this.form.participantList,
        ...this.form.recorderList
      ]
      return list || []
    },
    color() {
      return ["#FF4466", "#2EA222", "#2266FF", "#FF8822", "#333333"]
    },
  },
  data() {
    const endTimePass = (rule, value, callback) => {
      if (value) {
        if (moment(value).unix() - moment(this.form.startTime).unix() > 0) {
          callback()
        } else {
          callback(new Error('结束时间要大于开始时间'));
        }
      } else {
        callback(new Error('请填写结束时间'));
      }
    }
    const startTimePass = (rule, value, callback) => {
      if (value) {
        if (moment(value).unix() - moment(new Date()).unix() > 0) {
          callback()
        } else {
          callback(new Error('开始时间要大于当前时间'));
        }
      } else {
        callback(new Error('请填写开始时间'));
      }
    }
    return {
      form: {
        meetingClassification: [],    //会议分类
        meetingAgenda: "",  //会议名称
        meetingAddress: "",//会议地点
        meetingDescription: "",//会议说明
        hostList: [],  //主持人
        meetingBefore: "",
        meetingAfter: "",
        startTime: "",//开始时间
        endTime: "",//结束时间
        reminderMethod: ["5"],//提醒方式,默认不签到
        signMethod: "0",//签到方式 默认不签到
        appThreeMeetingOrganizationList: [],//组织
        participantList: [],//与会人员
        recorderList: [],//纪要负责人
        chargeOfSignInList: [],//签到负责人
        annex: "",
        fileList: [],
        isOnline: "0",
        isVote: "0"
      },
      partyOrgIdList: [],
      signStart: "",
      signEnd: "",
      areaId: "",
      voteOps: '1',
      fromRules: {
        meetingClassification: [{required: true, message: "请选择会议分类", trigger: "change"}],
        meetingAgenda: [{required: true, message: "请输入会议名称", trigger: "change"}],
        meetingAddress: [{required: true, message: "请输入会议地点", trigger: "change"}],
        isOnline: [{required: true, message: "请选择举办方式", trigger: "change"}],
        voteTopic: [{required: true, message: "请输入投票主题", trigger: "change"}],
        anonymous: [{required: true, message: "请选择投票形式", trigger: "change"}],
        voteDeadline: [{required: true, message: "请选择截止时间", trigger: "change"}],
        meetingDescription: [{required: true, message: "请输入补充说明", trigger: "change"}],
        meetingBefore: [{required: true, message: '请填写签到时间', trigger: "change"}],
        meetingBeforeCo: [{required: false, message: '请填写签到时间', trigger: "change"}],
        startTime: [{required: true, validator: startTimePass, trigger: "change"}],
        endTime: [{required: true, validator: endTimePass, trigger: "change"}],
        signMethod: [{required: true, message: "请选择签到方式", trigger: "change"}],
        reminderMethod: [{required: true, message: "请选择提醒方式", trigger: "change"}],
        hostList: [{required: true, message: "请选择主持人", trigger: "change"}],
        recorderList: [{required: true, message: "请选择纪要负责人", trigger: "change"}],
        chargeOfSignInList: [{required: true, message: "请选择签到负责人", trigger: "change"}],
        participantList: [{required: true, message: "请选择与会人员", trigger: "change"}],
        appThreeMeetingOrganizationList: [{required: true, message: "请选择党组织", trigger: "change"}]
      },
      defaultProps: {
        children: 'children',
        label: 'name'
      },
      treeData: [],//tree
      dialogVisible: false,//弹窗
      filterText: "",//tree模糊搜索
      selectParty: [],//选中的党组织
      partyKey: 1,
      isShowChooseUser: true,
      search: {
        postStatus: "",
        meetingUserName: "",
      },
    };

  },
  watch: {
    filterText(val) {
      this.$refs.partyTree.filter(val);
    },

    selectParty(newVal) {
      ++this.partyKey

      if (!newVal.length) {
        this.isShowChooseUser = false

        this.$nextTick(() => {
          setTimeout(() => {

            this.isShowChooseUser = true
          }, 1000)
        })
      }
      this.$set(this.form, 'hostList', [])
      this.$set(this.form, 'recorderList', [])
      this.$set(this.form, 'chargeOfSignInList', [])
      this.$set(this.form, 'participantList', [])
    },

    form: {
      handler(newVal) {
        if (newVal.startTime && newVal.meetingBefore) {
          let d = new Date(newVal.startTime);
          let time = d.getTime();
          let min = (Number(newVal.meetingBefore)) * 60000
          let total = time - min;
          this.signStart = this.$moment(total).format('YYYY-MM-DD HH:mm:ss');
        }
        if (newVal.startTime && newVal.meetingAfter) {
          let d = new Date(newVal.startTime);
          let time = d.getTime();
          let min = (Number(newVal.meetingAfter)) * 60000
          let total = time + min;
          this.signEnd = this.$moment(total).format('YYYY-MM-DD HH:mm:ss');
        }
      },
      deep: true
    }
  },
  methods: {
    deletePerson(index) {
      if (this.form.participantList[index].isHost) {
        this.form.participantList.map(e => {
          this.$set(e, "isHost", false);
        })
      }
      this.form.participantList.splice(index, 1);
    },
			getOrgList () {
				this.$axios.post('/app/partyOrganization/queryAllChildren', null, {
					params: {
						id: this.user.info.organizationId || ''
					}
				}).then((res) => {
					if (res && res.code == 0) {
            this.partyOrgIdList = res.data
						// this.isShow = true
					}
				})
			},
    //选择主持人
    selectHost(index) {
      this.form.participantList.map(e => {
        e.isHost = false;
      })
      this.form.participantList[index].isHost = true;
    },

    //开始时间，结束时间验证
    dataChange() {
      this.$refs.startTime.$emit('el.form.change');
      this.$refs.endTime.$emit('el.form.change');
      if (!this.form.startTime) {
        this.form.endTime = null
      }
    },

    //与会人员
    handleSelectParty() {
      this.form.participantList.map(e => {
        e.meetingUserRole = "3";
        e.userName = e.name;
        this.$set(e, "isHost", false);
      })
    },
    //纪要负责人
    changeRecorderList(val) {
      if (val) {
        this.$set(val, "meetingUserRole", "1");
        this.$set(val, "userName", val.name);
        this.form.recorderList.splice(0, 1, val);
      } else {
        this.form.recorderList = [];
      }
    },
    //签到负责人
    changeCharge(val) {
      val.map((e) => {
        this.$set(e, "meetingUserRole", "2");
        this.$set(e, "userName", e.name);
      })
      this.form.chargeOfSignInList = val;
    },

    //参与人
    changeParticipantList(val) {
      this.$set(val, "meetingUserRole", "3");
      this.$set(val, "userName", val.name);
      this.form.participantList.push(val);
    },

    //保存提交表单验证
    confirm(status) {
      if (status == '1') {
        this.$refs.basicForm.validate(validate => {
          if (validate) {
            this.addUpdate(status);
          }
        });
      } else if (status == '0') {
        if (this.form.meetingAgenda == "") {
          return this.$message.error("请填写会议名称");
        } else if (!this.form.appThreeMeetingOrganizationList.length) {
          return this.$message.error("请选择与会组织");
        } else {
          this.addUpdate(status);
        }
      } else {  //取消返回主页
        this.$confirm('是否放弃编辑内容').then(() => {
          this.$parent.goBack();
        });
      }
    },

    //新增
    addUpdate(status) {
      let hasHost = false;
      this.form.participantList.map(e => {
        if (e.isHost) {
          hasHost = true;
          this.form.hostList.push({
            ...e,
            meetingUserRole: "0"
          })
        }
      })

      if (!hasHost && status == '1') {
        return this.$message.error("请选择主持人");
      }

      if (this.form.signMethod == '0') {
        this.form.chargeOfSignInList = [];
        this.form.meetingBefore = "";
        this.form.meetingAfter = "";
      }

      //会议分类
      this.form.meetingClassification = this.form.meetingClassification.join(",");

      //提醒方式
      this.form.reminderMethod = this.form.reminderMethod.join(",");

      //发布状态
      let postStatus = status;

      let appThreeMeetingUserList = [];

      let meetingList = [];

      //选择人员
      meetingList = [...this.form.hostList, ...this.form.recorderList, ...this.form.chargeOfSignInList, ...this.form.participantList]
      meetingList.forEach(i => {
        appThreeMeetingUserList.push({
          "meetingUserId": i.id,
          "meetingUserName": i.name,
          "meetingUserRole": i.meetingUserRole,
          "avatarUrl": i.avatarUrl ? i.avatarUrl : ""
        })
      })
      //附件
      this.form.annex = JSON.stringify(this.form.fileList);

      if (this.form.meetingBefore === '' && this.form.signMethod != 0) {
        this.form.meetingBefore = 60
      }
      if (this.form.meetingAfter === '' && this.form.signMethod != 0) {
        this.form.meetingAfter = 60
      }

      this.instance.post(`/app/appthreemeetinginfo/addOrUpdate`, {
        ...this.form,
        ...this.form.file,
        ...this.form.meetingUser,
        appThreeMeetingUserList,
        postStatus,
        id: this.detail.id
      }).then(res => {
        if (res && res.code == 0) {
          this.$message.success(status == '1' ? "会议新增成功" : "保存成功");
          this.$parent.goBack();
        }
      })
    },

    //获取会议详请
    getDetailInfo() {
      this.instance.post(`/app/appthreemeetinginfo/queryDetailById?id=${this.detail.id}`).then(res => {
        if (res && res.data) {
          this.form = res.data
          this.form.meetingClassification = res.data.meetingClassification.split(",");
          this.form.meetingAgenda = res.data.meetingAgenda;
          this.form.meetingAddress = res.data.meetingAddress;
          this.form.startTime = res.data.startTime;
          this.form.endTime = res.data.endTime;
          this.form.appThreeMeetingOrganizationList = res.data.appThreeMeetingOrganizationList;
          this.form.meetingDescription = res.data.meetingDescription;
          this.form.fileList = JSON.parse(res.data.annex || '[]');
          this.form.participantList = res.data.participantList.map(e => {
            return {
              ...e,
              name: e.meetingUserName,
              isHost: res.data.hostList.length ? (e.id == res.data.hostList[0].id) : false
            }
          });
          this.form.recorderList = res.data.recorderList.map(e => {
            return {...e, name: e.meetingUserName}
          });
          this.form.chargeOfSignInList = res.data.chargeOfSignInList.map(e => {
            return {...e, name: e.meetingUserName}
          });
          this.form.signMethod = res.data.signMethod;
          this.form.reminderMethod = res.data.reminderMethod.split(",");
          this.form.meetingBefore = res.data.meetingBefore;
          this.form.meetingAfter = res.data.meetingAfter;
        }
      });
    },

    //显示树结构
    showDialogVisible() {
      this.dialogVisible = true;
      this.$nextTick(() => {
        this.$refs.partyTree.setCheckedNodes(
            this.form.appThreeMeetingOrganizationList
        );
      });
    },
    // 查询所有党组织 树形结构
    searchSysAll() {
      this.instance
      .post("/app/partyOrganization/queryAllChildren", null, {
        params: {id: this.user.info.organizationId}
      })
      .then(res => {
        if (res && res.code == 0) {
          res.data = res.data.map(a => {
            return {...a};
          });
          this.treeData = res.data.filter(
              e => e.id == this.user.info.organizationId
          );
          this.treeData.map(t => this.addChild(t, res.data));
          if (this.filterText) {
            this.$nextTick(() => {
              this.$refs.partyTree.filter(this.filterText);
            });
          }
        }
      });
    },
    //节点过滤/搜索
    filterNode(value, data) {
      if (!value) return true;
      return data.name.indexOf(value) !== -1;
    },
    //选中的数据
    handleCheckChange() {
      this.selectParty = this.$refs.partyTree.getCheckedNodes()
    },
    //取消选择
    cancelSelect(index) {
      this.selectParty.splice(index, 1)
      this.$refs.partyTree.setCheckedNodes(this.selectParty);
    },
    //删除选择
    delate(index) {
      let parentId = this.form.appThreeMeetingOrganizationList[index].parentId
      this.form.appThreeMeetingOrganizationList.splice(index, 1);
      this.form.appThreeMeetingOrganizationList.map((item, i) => {
        if (item.id == parentId) {
          this.delate(i)
        }
      })

      this.form.hostList = []
      this.form.recorderList = []
      this.form.chargeOfSignInList = []
      this.form.participantList = []
    },
    //清空
    clearSelect() {
      this.$refs.partyTree.setCheckedKeys([]);
      this.selectParty = [];
      this.form.hostList = []
      this.form.recorderList = []
      this.form.chargeOfSignInList = []
      this.form.participantList = []
    },
    //确认选择
    confirmSelect() {
      this.form.appThreeMeetingOrganizationList = this.selectParty;
    },
  },
  created() {
    this.areaId = this.user.info.areaId;
    this.getOrgList()
    this.dict.load('yesOrNo', 'ThreeMeetingAnonymous', "meetingClassification", "feminderMethod", "addSignMethod", "postStatus").then(() => {
      this.searchSysAll();
      if (this.detail && this.detail.id) {
        this.getDetailInfo();
      }
    });
  },
  filters: {
    formatTime(time) {
      return moment(time).format("YYYY-MM-DD HH:mm");
    }
  }
};
</script>

<style scoped lang="scss">
.addThreeMeeting {
  height: 100%;

  ::v-deep .el-form {
    .ailist-title {
      padding-left: 0;
      margin-bottom: 8px;
    }

    .el-form-item {
      .el-date-editor {
        width: 100%;
      }
    }
  }

  ::v-deep .el-dialog__body {
    padding-top: 16px !important;
  }

  .host {
    font-size: 12px;
    width: 40px;
    height: 40px;
    display: inline-block;
    position: absolute;
    left: 7px;
    top: 6px;
    color: #ffffff;
    background-color: transparent;
    border-radius: 50%;
    opacity: 0;

    &:hover {
      opacity: 1;
      background-color: #AAAAAA;
    }
  }

  ::v-deep .el-upload--picture-card {
    width: 84px !important;
    height: 84px !important;
    line-height: 30px !important;
    background: rgba(245, 245, 245, 1) !important;
    border-radius: 2px !important;
    border: none !important;
  }

  .tips {
    box-sizing: border-box;
    padding: 0 106px;
    font-size: 12px;
    color: #999999;
    line-height: 16px;
  }

  .person {
    width: 100%;
    margin-top: 16px;

    .emcee {
      position: absolute;
      left: 0;
      top: 0;
      color: #2266FF;
      padding: 0 106px;
      font-size: 12px;
      line-height: 16px;
    }

    .select-person {
      display: flex;
      flex-direction: column;
      position: relative;
      // width:70px;
      margin: 0 15px;
      height: 70px;
      justify-content: center;
      align-items: center;

      .person-pictrue {
        width: 54px;
        height: 54px;
        border-radius: 50%;
        text-align: center;
        display: flex;
        align-items: center;
        justify-content: center;
        color: #fff;
        position: relative;

        img {
          width: 54px;
          height: 54px;
          border-radius: 50%;
        }

        .del-icon {
          position: absolute;
          top: -12px;
          right: -4px;
          font-size: 16px;
          color: #333;
          width: 20px;
          height: 24px;
          border-radius: 50%;
          background-color: #fff;
        }
      }

      .person-name {
        font-size: 14px;
        color: #666;
        line-height: normal;
      }

    }

    ::v-deep .el-form-item__content {
      display: flex;
      flex-wrap: wrap;
    }

    .add-person {
      display: flex;
      flex-direction: column;
      position: relative;
      // width:70px;
      margin: 0 15px;
      height: 70px;
      justify-content: center;
      align-items: center;

      .add-icon {
        width: 40px;
        height: 40px;
        line-height: 40px;
        margin: 0 auto 4px;
        text-align: center;
        font-size: 20px;
        color: #2266FF;
        border: 1px dashed #2266ff;
        border-radius: 50%;
        box-sizing: border-box;

        .icon-add {
          color: #2266FF;
          font-size: 20px;
          margin-top: 5px;
        }
      }

    }
  }

  ::v-deep p.add_top {
    margin: 0;
  }

  .time-input {
    width: 48px;
    height: 32px;
    margin: 0 8px;

    ::v-deep .el-input__inner {
      line-height: 32px;
      height: 32px;
      padding: 0 10px;
    }
  }

  ::v-deep .select-party {
    .el-dialog__header {
      padding: 13px 16px;
      border-bottom: 1px solid #eee;
    }

    .el-dialog__body {
      padding: 24px 40px 48px;
    }

    .el-tree {
      background-color: #fcfcfc;
      height: calc(100% - 40px);
      width: 350px;
    }

    .add-item {
      width: 274px;
      height: 360px;
      background: rgba(252, 252, 252, 1);
      border-radius: 2px;
      border: 1px solid rgba(208, 212, 220, 1);
      position: relative;
      overflow: auto;
      box-sizing: border-box;
      margin: 0;

      .add_top {
        width: 100%;
        height: 40px;
        background: rgba(245, 245, 245, 1);
        border-bottom: 1px solid rgba(208, 212, 220, 1);
        padding: 0 8px;
        box-sizing: border-box;
        display: flex;
        justify-content: space-between;
        align-items: center;
      }

      .tree_list {
        width: 100%;
        overflow: auto;
        height: calc(100% - 40px);


      }

      .add_buttom {
        position: absolute;
        left: 0;
        bottom: 0;
        font-size: 12px;
        width: 310px;
        height: 32px;
        line-height: 32px;
        z-index: 10000;
        background: rgba(245, 246, 247, 1);
        color: rgba(51, 51, 51, 1);
        box-shadow: 0 1px 0 0 rgba(216, 220, 227, 1);
        display: flex;
        justify-content: center;
        align-items: center;
        cursor: pointer;
      }

      .add_tag {
        width: 310px;
        height: calc(100% - 40px);
        overflow-y: auto;

        .el-tag {
          margin: 8px 8px 0 8px;
          background: rgba(238, 238, 238, 1);
          border: none;
          color: #666;
          max-width: calc(100% - 16px);
          overflow: hidden;
          text-overflow: ellipsis;
          white-space: nowrap;
          width: 100%;
        }

        ::v-deep .el-tag .el-icon-close {
          color: #666;
        }
      }
    }
  }

  .organ {
    width: auto;
    height: auto;
    padding: 0 10px;
    line-height: 32px;
    border: 1px solid #D0D4DC;
    border-radius: 5px;
    cursor: pointer;
    box-sizing: border-box;
    color: #666;

    .organzation {
      background-color: #eee;
      margin-right: 4px;
      padding: 4px;
    }
  }
}
</style>



