<template>
  <a-spin :spinning="confirmLoading">
    <j-form-container :disabled="formDisabled">
      <a-form-model ref="form" :model="model" :rules="validatorRules" slot="detail">
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="标题" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeTitle">
              <a-input v-model="model.noticeTitle" placeholder="请输入标题" style="width:90%"  :maxLength="100"></a-input>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="紧急程度" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="urgentDegree">
              <a-select style="width: 50%" v-model="model.urgentDegree" placeholder="请选择紧急程度">
                <a-select-option v-for="item in urgentDegreeList" :key="item.value" :value="item.value">{{item.label}}</a-select-option>
              </a-select>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="公告范围" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeRange">
              <a-radio-group v-model="model.noticeRange" style="width: 50%">
                <a-radio value="ALL">全部小区</a-radio>
                <a-radio value="POINT">指定小区</a-radio>
              </a-radio-group>
            </a-form-model-item>
          </a-col>
          <a-col :span="24" v-if="model.noticeRange === 'POINT'">
            <a-form-model-item label="指定小区" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="communityCodes">
              <a-select style="width: 100%;" mode="multiple" v-model="model.communityCodes" 
              :getPopupContainer="
                triggerNode => {
                  return triggerNode.parentNode
                }"  placeholder="请选择指定小区" labelInValue>
                <a-select-option v-for="item in communityList" :key="item.communityCode" :value="item.communityCode">{{item.communityName}}</a-select-option>
              </a-select>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="内容" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="noticeContent">
              <j-editor placeholder="请输入内容" v-model="model.noticeContent"/>
            </a-form-model-item>
          </a-col>
          <a-col :span="24">
            <a-form-model-item label="是否定时发布" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="isScheduledRelease">
              <a-radio-group name="radioGroup" v-model="model.isScheduledRelease" style="max-width:350px">
                <a-radio v-for="item in scheduledReleaseList" :key="item.value" :value="item.value">{{item.label}}</a-radio>
              </a-radio-group>
            </a-form-model-item>
          </a-col>
          <a-col :span="24" v-if="model.isScheduledRelease === 1">
            <a-form-model-item label="发布时间" :labelCol="labelCol" :wrapperCol="wrapperCol" prop="releaseTime">
              <j-date placeholder="请选择发布日期" v-model="model.releaseTime" :showTime="true" dateFormat="YYYY-MM-DD HH:mm:ss" style="width: 100%;max-width:350px" />
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </j-form-container>
  </a-spin>
</template>

<script>

  import { httpAction, getAction } from '@/api/manage'
  import { formatDate } from '@/utils/util'
  import {getCapitalCommunityListApi} from '@/api/api'
  import {URGENT_DEGREE, SCHEDULED_RELEASE} from '@/assets/static.js'

  export default {
    name: 'PropertyChargruleForm',
    components: {
    },
    props: {
      //表单禁用
      disabled: {
        type: Boolean,
        default: false,
        required: false
      }
    },
    data () {
      return {
        urgentDegreeList: URGENT_DEGREE,
        scheduledReleaseList: SCHEDULED_RELEASE,
        communityList: [],
        model:{
          noticeTitle: '',
          urgentDegree: 'usual',
          noticeRange: 'ALL',
          communityCodes: [],
          noticeContent: '',
          isScheduledRelease: 0,
          releaseTime: ''
         },
        labelCol: {
          xs: { span: 24 },
          sm: { span: 3 },
        },
        wrapperCol: {
          xs: { span: 24 },
          sm: { span: 20 },
        },
        confirmLoading: false,
        validatorRules: {
          noticeTitle: [{ required: true, message: '请输入标题', trigger: 'blur' }],
          noticeContent: [{ required: true, message: '请输入内容', trigger: 'blur' }],
          releaseTime: [{ required: true, message: '请选择发布日期', trigger: 'change' }],
          communityCodes: [{ required: true, message: '请选择小区', trigger: 'change' }]
        },
        url: {
          add: "/property-company/notice/companyNotice/add",
          edit: "/property-company/notice/companyNotice/edit",
          queryById: "/property-company/notice/companyNotice/queryById"
        }
      }
    },
    computed: {
      formDisabled(){
        return this.disabled
      },
    },
    created () {
       //备份model原始值
      this.modelDefault = JSON.parse(JSON.stringify(this.model));
      this.onCapitalCommunityList()
    },
    methods: {
      async onCapitalCommunityList() {
        let {result} = await getCapitalCommunityListApi()
        this.communityList = result
      },
      add () {
        this.edit(this.modelDefault);
      },
      edit (record) {
        console.log(record)
        this.model = Object.assign({}, record);
        this.visible = true;
      },
      submitForm () {
        if(this.model.noticeRange === 'ALL') {
          this.model['noticeCommunityRefList'] = []
        } else {
          this.model['noticeCommunityRefList'] = this.model.communityCodes.map(item=> {
            return {
              communityCode: item.key,
              communityName: item.label
            }
          })
        }
        const that = this;
        // 触发表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true;
            let httpurl = '';
            let method = '';
            if(!this.model.id){
              httpurl+=this.url.add;
              method = 'post';
              if(this.model.isScheduledRelease === 0) {
                this.model.releaseTime = formatDate(new Date().getTime(), 'yyyy-MM-dd hh:mm:ss')
              }
            }else{
              httpurl+=this.url.edit;
              method = 'put';
            }
            httpAction(httpurl,this.model,method).then((res)=>{
              if(res.success){
                that.$message.success(res.message);
                that.$emit('ok');
              }else{
                that.$message.warning(res.message);
              }
            }).finally(() => {
              that.confirmLoading = false;
            })
          }
         
        })
      },
    }
  }
</script>