<template>
  <div>
    <div class="container normal-panel normal-margin sticky">
      <el-button :disabled="store.state.pageOnlyRead" type="warning" size="small" icon="el-icon-s-claim" @click="onSubmit((res)=>tool.showMessage(res))" :loading="store.state.loading">保 存</el-button>
    </div>
    <div style="overflow-x:hidden">
      <el-row :gutter="16">
        <el-col :span="13">
          <div class="container normal-panel normal-margin">
            <p class="normal-title normal-margin">通告设置</p>
            <el-row :gutter="16">
              <el-form ref="form" :model="form" :rules="rules" label-width="80px" label-position="left" size="small">
                <el-col :span="24">
                  <el-form-item label="标题" prop="title">
                    <el-input v-model="form.title"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="导语" prop="summary">
                    <el-input v-model="form.summary"></el-input>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="板块" prop="sat_notice_classid">
                    <el-select v-model="form.sat_notice_classid" placeholder="请选择">
                      <el-option v-for="item in options" :key="item.sat_notice_classid" :label="item.classname"
                        :value="item.sat_notice_classid">
                      </el-option>
                    </el-select>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="生效日期" prop="begdate">
                    <el-date-picker style="width:100%" v-model="form.begdate" value-format="yyyy-MM-dd" type="date"
                      placeholder="生效日期">
                    </el-date-picker>
                  </el-form-item>
                </el-col>
                <el-col :span="8">
                  <el-form-item label="截止日期" prop="enddate">
                    <el-date-picker style="width:100%" v-model="form.enddate" value-format="yyyy-MM-dd" type="date"
                      placeholder="截止日期">
                    </el-date-picker>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="是否置顶">
                    <el-radio-group v-model="form.isontop">
                      <el-radio :label="1">置顶</el-radio>
                      <el-radio :label="0">不置顶</el-radio>
                    </el-radio-group>
                  </el-form-item>
                </el-col>
                <el-col :span="24">
                  <el-form-item label="通告封面">
                    <previewImage v-if="form.cover" style="width:256px" :image="image" :deletebtn="true"
                      @onSuccess="clearCover"></previewImage>
                    <upload v-else btntype="image" :folderid="folderid" accept=".JPG,.PNG"
                      :bindData="{ ownertable: 'sat_notice', ownerid: form.sat_noticeid, usetype: 'cover' }"
                      @onSuccess="onCoverSubmit"></upload>
                    <p class="info">注：建议上传图片大小130x80像素，大小不超过2M，格式为JPG/PNG</p>
                  </el-form-item>
                </el-col>
              </el-form>
            </el-row>
          </div>
          <div class="container normal-panel normal-margin">
            <attachmentList :attinfos="attinfo_video" @onSuccess="queryNoticeMain" :onlyread="store.state.pageOnlyRead">
              <p slot="title">视频附件</p>
              <upload slot="upload" accept=".mp4,.ogg,.webm" :folderid="folderid"
                :bindData="{ ownertable: 'sat_notice', ownerid: form.sat_noticeid, usetype: 'default' }"
                @onSuccess="onUploadSuccess"></upload>
            </attachmentList>
          </div>
          <div class="container normal-panel normal-margin">
            <attachmentList :attinfos="attinfo_attachment" @onSuccess="queryNoticeMain" :onlyread="store.state.pageOnlyRead">
              <upload slot="upload" :folderid="folderid"
                :bindData="{ ownertable: 'sat_notice', ownerid: form.sat_noticeid, usetype: 'default' }"
                @onSuccess="onUploadSuccess"></upload>
            </attachmentList>
          </div>
          <div class="container normal-panel normal-margin">
            <myEditor ref="editor" :content="form.content" :id="form.sat_noticeid"></myEditor>
          </div>
        </el-col>
        <el-col :span="11">
          <div class="container normal-panel normal-margin">
            <scopeOfauth :defaultData="defaultData" appidname="sat_noticeid" obiectName="sat_notice" :dataid="$route.query.id"
              @onChecked="onChecked"></scopeOfauth>
          </div>
        </el-col>
      </el-row>
    </div>
  </div>
</template>

<script>
import upload from '@/components/upload/hw_obs_upload.vue'
import previewImage from '@/components/previewImage/index.vue'
import attachmentList from '@/components/attachment_list/index.vue'
import scopeOfauth from '@/components/scopeOfAuthority/index.vue'
import myEditor from '@/components/my-editor/Editor.vue'
import store from '@/store'
export default {
  components: {
    upload,
    previewImage,
    attachmentList,
    scopeOfauth,
    myEditor
  },
  data() {
    return {
      store,
      folderid: JSON.parse(sessionStorage.getItem('folderid')).appfolderid,
      rules: {
        title: [
          { required: true, message: '请输入课程名称', trigger: 'blur' },
        ],
        begdate: [
          { required: true, message: '请选择生效日期', trigger: 'change' }
        ],
        enddate: [
          { required: true, message: '请选择截止日期', trigger: 'change' }
        ],
        sat_notice_classid: [
          { required: true, message: '请选择版块', trigger: 'change' }
        ],
        summary: [
          { required: true, message: '请输入导语', trigger: 'blur' },
        ],
      },
      form: {
        "title": "",
        "notes": "",
        "istextrequired": 1,
        "isattrequired": 1,
        "onceonly": 1,
        "sat_submiteditmodelid": "0",
        "begdate": "",
        "enddate": "",
        "issecret": false
      },
      defaultData: {},
      image: {},
      authData: {},
      attinfo_video: [],
      attinfo_attachment: [],
      options: [],
    }
  },
  methods: {
    onUploadSuccess() {
      this.form.status !== '新建' ? this.queryNoticeMain() : this.onSubmit()
    },
    onSubmit(callbcak) {
      this.$refs['form'].validate(async (valid) => {
        if (!valid) return false;
        this.form.content = this.$refs.editor.html
        const res = await this.$api.requested({
          "classname": "webmanage.saletool.notice.notice",
          "method": "insertormodify_notice",
          "content": this.form
        })
        callbcak?callbcak(res):''
        this.insertCoursewareauth()
        this.queryNoticeMain()
      });
    },
    //通告详情
    async queryNoticeMain() {
      const res = await this.$api.requested({
        "classname": "webmanage.saletool.notice.notice",
        "method": "queryNoticeMain",
        "content": {
          "sat_noticeid": this.$route.query.id
        }
      })
      this.attinfo_video = res.data.attinfos.filter(e => {
        if (e.postfix === 'mp4' || e.postfix === 'ogg' || e.postfix === 'webm') {
          return e
        }
      })
      this.attinfo_attachment = res.data.attinfos.filter(e => {
        if (e.postfix !== 'mp4' && e.postfix !== 'ogg' && e.postfix !== 'webm') {
          return e
        }
      })
      this.form = Object.assign({}, this.form, res.data)
      this.form.status !== '新建'?this.$store.dispatch('pageOnlyRead',true):this.$store.dispatch('pageOnlyRead',false)
      this.queryFileLink()
      this.queryNoticeClass()
    },
    // 通告板块
    async queryNoticeClass() {
      const res = await this.$api.requested({
        "classname": "webmanage.saletool.notice.noticeclass",
        "method": "queryNoticeClass",
        "content": {
          "pageNumber": 1,
          "pageSize": 1000,
          "where": {
            "condition": ""
          }
        }
      })
      this.options = res.data
      // this.form.sat_notice_classid = res.data[0].sat_notice_classid
    },
    // 获取封面信息
    async queryFileLink() {
      this.dialogEditVisible = true
      const res = await this.$api.requested({
        "classname": "system.attachment.Attachment",
        "method": "queryFileLink",
        "content": {
          "ownertable": 'sat_notice',
          "ownerid": this.form.sat_noticeid,
          "usetype": 'cover'//传空返回有所
        }
      })
      res.data[0] ? this.image = res.data[0] : this.image = { url: '' }
    },
    onCoverSubmit(res) {
      this.form.cover = JSON.parse(res.attinfos).data[0].url
      this.image = JSON.parse(res.attinfos).data[0]
    },
    clearCover() {
      this.form.cover = null
      this.image = {}
    },
    // 获取保存授权范围数据
    onChecked(param) {
      this.authData = param
    },
    // 新增授权范围
    async insertCoursewareauth() {
      const res = await this.$api.requested({
        "classname": "webmanage.saletool.notice.noticeauth",
        "method": "createNoticeAuth",
        "content": this.authData
      })
      res.code === 0 ? this.$notify({
        title: '失败',
        message: res.data,
        type: 'error'
      }) : ''
    },
    // 查询授权信息
    async query_auth() {
      const res = await this.$api.requested({
        "classname": "webmanage.saletool.notice.noticeauth",
        "method": "queryNoticeAuth",
        "content": {
          "sat_noticeid": this.$route.query.id,
        }
      })
      this.defaultData = res.data
    },
  },
  mounted() {
    this.queryNoticeMain()
    this.query_auth()
  }
}

</script>
<style>
</style>