<template>
   <div>
        <CprStepCell
             :cellData="authGuaranteeCer" 
             @fileListUpdata="onAuthGuaranteeCer"
             >
             <div>
                 <div class="copyBtn dowloadLink" @click="downloadFile('7')">《权利保证书(作品)》下载</div>
                 <FileCard class=" mt-3" :key="fileData.fileHash" v-for="fileData in pageData.authGuaranteeCer" :fileData="fileData" @deleteFile="onAuthGuaranteeCer" @addFileUrl="onAddAuthGuaranteeCerFileUrl" :limit="false"></FileCard>
             </div>
        </CprStepCell>
        
        <CprStepCell 
             :key="authGetWay.labelText" 
             :cellData="authGetWay" 
             @onActionSelect="(value)=>onDataChange(value, 'authGetWay')"
             :contentText="authGetWayText">
        </CprStepCell>
        <CprStepCell :cellData="uploadAuthCer" @fileListUpdata="onUploadAuthCer" >
            <div>
                <span class="copyBtn dowloadLink" @click="downloadFile('0')">《权利获取方式证明材料附件》下载</span>
                <FileCard class=" mt-3" :key="fileData.fileHash" v-for="fileData in pageData.uploadAuthCer" :fileData="fileData" @deleteFile="onUploadAuthCer" @addFileUrl="onAddAuthCerFileUrl" :limit="false"></FileCard>
            </div>
        </CprStepCell>

        <CprStepCell 
             :key="authBelongWay.labelText" 
             :cellData="authBelongWay" 
             @onActionSelect="(value)=>onDataChange(value, 'authBelongWay')"
             :contentText="authBelongWayText"
             >
        </CprStepCell>
        <div :key="authBelongCer.labelText" v-if="[1,2,3,4].indexOf(authBelongWayValue) != -1">
           <CprStepCell :cellData="authBelongCer" @fileListUpdata="onAuthBelongCer" >
               <div>
                   <div v-if="authBelongWayValue == 1">
                       <div class="copyBtn dowloadLink" @click="downloadFile('2')">《合作作品权属协议书》下载</div>
                   </div>
                   <div v-if="authBelongWayValue == 2">
                       <div class="copyBtn dowloadLink" @click="downloadFile('3')">《著作权权属声明》下载</div>
                   </div>
                   <div v-if="authBelongWayValue == 3">
                       <div class="copyBtn dowloadLink" @click="downloadFile('4')">《职务作品权属约定》下载</div>
                   </div>
                   <div v-if="authBelongWayValue == 4">
                       <div class="copyBtn dowloadLink" @click="downloadFile('5', 0)">《委托创作协议书附件（甲方享有全部权利）》下载</div>
                       <div class="copyBtn dowloadLink" @click="downloadFile('5', 1)">《委托创作协议书附件（作者保留署名权）》下载</div>
                   </div>
                   <FileCard class=" mt-3" :key="fileData.fileHash" v-for="fileData in pageData.authBelongCer" :fileData="fileData" @deleteFile="onAuthBelongCer" @addFileUrl="onAddAuthBelongCerFileUrl" :limit="false"></FileCard>
               </div>
           </CprStepCell>
        </div>



   </div>
</template>

<script lang='ts'>
/**框架*/
import Vue from 'vue'
/**工具库*/
/**类型*/
/**组件*/
import CprStepCell from '@/view/NFT/Copyright/component/CprStepCell.vue'
import FileCard from '@/view/NFT/Copyright/component/FileCard.vue'
/**自定义方法*/

interface FileData {
   fileName: string;
   fileHash: string;
   fileUrl: string;
   type: string;
   file: File;
}
interface PageDataType {
    authGetWay: unknown;
    uploadAuthCer: FileData[];
    authBelongWay: unknown;
    authBelongCer: FileData[];
    authGuaranteeCer: FileData[];
}
export default Vue.extend({
   name:'',
   data(){
       return {
           authGetWay: {
                labelText: '权利取得方式',
                nessesary: true,
                tipText: 
`原始：是指根据法律规定，最初取得著作权或不依赖于原所有人的意志而取得著作权;
继承：包括继承遗产，是指继承人按照法律的直接规定或者合法有效遗嘱的指定，取得被继承人死亡时遗留的个人合法著作权的财产权；
承受：指享有原著作权的企业被合并或分立，由合并或分立后其他企业享有著作权情况;
转让：指著作权人将著作权中的全部或部分财产权有偿或无偿地移交给他人所有的法律行为;
其他：因其他合法原因取得著作权的
`,
                placeHolder: '请选择权利取得方式',
                inputType: 'choose',
                actions:[{name:'原始', value: 0}, {name:'继承', value: 1}, {name:'承受', value: 2}, {name:'其他', value: 3}]
           },
           uploadAuthCer: {
               labelText: '权利取得证明',
               nessesary: true,
               tipText: 
`
1、《权利获取方式证明》需要加盖公章，法定代表人签字。文件请上传jpg、png、jpeg、pdf、word、docx格式。
2、证明提供参考：
·继承：《著作权人与被继承人的关系证明：户口本》、《被继承人死亡证明》、《有限遗嘱或公证书或其他继承人发起继承权文件》
·承受：《企业变更证明》、《合同》、《债权人会议决议》、《清算组织公告》
·转让：《转让合同》
`,
               placeHolder: '请上传《权利取得方式证明材料》',
               inputType: 'file',
               fileListMaxCount: 1,
               fileTypeArray: ['JPG','JPEG','PNG','PDF','WORD','DOCX'],
           },
           authBelongWay: {
                labelText: '权利归属方式',
                nessesary: true,
                tipText: 
`个人作品：指自然人在没有他人参与的情况下，独立创作完成的作品；
合作作品：指两人以上合作创作作品；
法人作品：指由法人或者其他组织主持，代表法人或者其他组织意志创作，并由法人或者其他组织承担责任的作品；
职务作品：指公民为完成法人或者其他组织工作任务所创作的作品；
委托作品：指委托人委托其他人创作的作品。
`,
                placeHolder: '请选择归属方式',
                inputType: 'choose',
                actions:[{name:'个人作品', value: 0}, {name:'合作作品', value: 1}, {name:'法人作品', value: 2}, {name:'职务作品', value: 3}, {name:'委托作品', value: 4}]
           },
           authBelongCer: {
               labelText: '权利归属证明',
               nessesary: true,
               tipText: 
`
1、不同权利归属方式，需要提供相应的权利归属证明；
2、《权利归属证明》需亲笔签字或盖章确认。文件请上传jpg、png、jpeg、pdf、word、docx格式。
`,
               placeHolder: '请上传《合作作品权属协议书》',
               inputType: 'file',
               fileListMaxCount: 1,
               fileTypeArray: ['JPG','JPEG','PNG','PDF','WORD','DOCX'],
           },
           authGuaranteeCer: {
               labelText: '作品权利保证书',
               nessesary: true,
               tipText: '《作品权利保证书》需亲笔签字或盖章确认。文件请上传jpg、png、jpeg、pdf、word、docx格式。',
               placeHolder: '请上传《权利保证书(作品)》',
               inputType: 'file',
               fileListMaxCount: 1,
               fileTypeArray: ['JPG','JPEG','PNG','PDF','WORD','DOCX'],
           }
       }
   },
   computed: {
       authGetWayText(){
           return this.$store.state.copyright.eachPageData[2].authGetWay.name
       },
       authBelongWayValue(){
           return this.$store.state.copyright.eachPageData[2].authBelongWay.value
       },
       authBelongWayText(){
           return this.$store.state.copyright.eachPageData[2].authBelongWay.name
       },
       pageData(): PageDataType{
           return this.$store.state.copyright.eachPageData[2]
       }
   },
   components: {
       CprStepCell ,
       FileCard
   },
   methods: {
       onDataChange(value: any, type: string){
           if(type == 'authBelongWay') {
               switch(value.value){
                   case 1:
                       this.authBelongCer.placeHolder = '请上传《合作作品权属协议书》'
                       break;
                   case 2:
                       this.authBelongCer.placeHolder = '请上传《著作权权属声明》'
                       break;
                   case 3:
                       this.authBelongCer.placeHolder = '请上传《职务作品权属约定》'
                       break;
                   case 4:
                       this.authBelongCer.placeHolder = '请上传《委托创作协议书附件》'
                       break;
               }
           }
           
           this.$store.commit('copyright/updataThirdPageData', {type, value})
       },
       /**添加或删除权利获取证明 */
       onUploadAuthCer(value: FileData | string){
           this.$store.commit('copyright/updataThirdPageData', {type: 'uploadAuthCer', value})
       },
       /**添加权利获取证明文件路径 */
       onAddAuthCerFileUrl(value: {fileHash: string, fileUrl: string}){
           this.$store.commit('copyright/onAddCerFileUrl', {type: 'uploadAuthCer', value})
       },
       /**添加或删除权利归属证明 */
       onAuthBelongCer(value: FileData | string){
           this.$store.commit('copyright/updataThirdPageData', {type: 'authBelongCer', value})
       },
       /**添加权利归属证明文件路径 */
       onAddAuthBelongCerFileUrl(value: {fileHash: string, fileUrl: string}){
           this.$store.commit('copyright/onAddCerFileUrl', {type: 'authBelongCer', value})
       },
       /**添加或删除权利保证书 */
       onAuthGuaranteeCer(value: {fileHash: string, fileUrl: string}){
           this.$store.commit('copyright/updataThirdPageData', {type: 'authGuaranteeCer', value})
       },
       /**添加权利保证书文件路径 */
       onAddAuthGuaranteeCerFileUrl(value: {fileHash: string, fileUrl: string}){
           this.$store.commit('copyright/onAddCerFileUrl', {type: 'authGuaranteeCer', value})
       },
       /**下载文件 */
       async downloadFile(type: string, count:number = 0){
           const res = await this.$service.copyrightService.getTemplateUrlList(type) as any
           if(res.length >= 1) {
                   let link = document.createElement('a')
                   link.download = res[count as number].fileName
                   link.style.display = 'none'
                   link.href = res[count as number].fileUrl
                   document.body.appendChild(link)
                   link.click()
                   URL.revokeObjectURL(link.href)
                   document.body.removeChild(link)
           } else {
               this.$toast('没有可以下载的文件')
           }
       }
   }
})
</script>

<style scoped lang='less'>
.dowloadLink {
    color: #6377FF
}

</style> 