<template> 
  <view class="page"> 
    <view v-if="ready"> 
      <l-select 
        @input="setValue('Acc_GoodsDemage.Dormitory', $event)"
        :value="getValue('Acc_GoodsDemage.Dormitory')"
        :disabled="!edit"
        :range="dataSource.Acc_GoodsDemage.Dormitory"
		@change="DormitoryChange"
        title="宿舍楼"
        required
      /> 
	  <l-select
	    @input="setValue('Acc_GoodsDemage.Unit', $event)"
	    :value="getValue('Acc_GoodsDemage.Unit')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.Unit"
          @change="UnitChange"
	    title="单元"
        required
	  /> 
	  <l-select
	    @input="setValue('Acc_GoodsDemage.Floor', $event)"
	    :value="getValue('Acc_GoodsDemage.Floor')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.Floor"
          @change="FloorChange"
	    title="楼层"
        required
	  /> 
	  <l-select
	    @input="setValue('Acc_GoodsDemage.RId', $event)"
	    :value="getValue('Acc_GoodsDemage.RId')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.RId"
	    title="宿舍"
        required
	  /> 
	  
	  <l-select
	    @input="setValue('Acc_GoodsDemage.DeptNo', $event)"
	    :value="getValue('Acc_GoodsDemage.DeptNo')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.DeptNo"
          @change="DeptNoChange"
	    title="专业部"
        required
	  /> 
	  <l-select
	    @input="setValue('Acc_GoodsDemage.MajorNo', $event)"
	    :value="getValue('Acc_GoodsDemage.MajorNo')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.MajorNo"
          @change="MajorNoChange"
	    title="专业"
        required
	  /> 
	  <l-select
	    @input="setValue('Acc_GoodsDemage.ClassNo', $event)"
	    :value="getValue('Acc_GoodsDemage.ClassNo')"
	    :disabled="!edit"
	    :range="dataSource.Acc_GoodsDemage.ClassNo"
	    title="班级"
        required
	  /> 
	  
      <l-textarea 
        @input="setValue('Acc_GoodsDemage.DamageDescribe', $event)"
        :value="getValue('Acc_GoodsDemage.DamageDescribe')"
        :readonly="!edit"
        title="损坏描述"
        required
      /> 
	  <!-- 附件上传 -->
	  <l-input
	    @input="setValue('Acc_GoodsDemage.Files', $event)"
	    :value="getValue('Acc_GoodsDemage.Files')"
	    disabled="disabled"
		v-show="false"
	    title="附件值"
	  /> 
	  <uploadFile :number="5" :folderId="folderId" :value="fileList" :readonly="!edit" :title="fileTitle" :required="false"></uploadFile>
	  
	  
    </view> 
  
    <view v-if="ready" class="bg-white margin-tb padding" style="padding-top: 0; overflow: hidden;"> 
      <l-button v-if="edit" @click="action('save')" size="lg" color="green" class="block margin-top" block> 
        提交保存 
      </l-button> 
      <l-button v-if="edit && mode !== 'create'" @click="action('reset')" size="lg" line="red" class="block margin-top" block> 
        取消编辑 
      </l-button> 
    </view> 
  </view> 
</template> 
  
  
<script> 
/* 
 * 版 本 Learun-ADMS V7.0.3 力软敏捷开发框架(http://www.learun.cn) 
 * Copyright (c) 2013-2020 上海力软信息技术有限公司 
 * 创建人：超级管理员 
 * 日  期：2022-09-19 09:37 
 * 描  述：宿舍物品损坏上报 
 */
  
/** 
 * 本段代码由移动端代码生成器输出，移动端须 2.2.0 版本及以上可以使用 
 * 请在移动端 /pages.json 中的 pages 字段中添加一条记录： 
 * { "path": "pages/LogisticsManagement/Acc_GoodsDemage/single", "style": { "navigationBarTitleText": "表单详情页" } } 
 *  
 * （navigationBarTitleText 字段为本页面的标题文本，可以修改） 
 * （必须自行操作该步骤，力软代码生成器不会自动帮您修改 /pages.json 文件） 
 */
  
import get from 'lodash/get'
import set from 'lodash/set'
import moment from 'moment'
import customPageMixins from '@/common/custompage.js'
import uploadFile from '@/components/upload-file2.vue'
  
export default { 
  mixins: [customPageMixins], 
  components:{
  	uploadFile,
  },
  data() { 
    return { 
      // 页面相关参数 
      id: null, 
      mode: null, 
      edit: null, 
      ready: false, 
	  fileList:[],//附件列表
	  folderId:null,//附件随机文件夹id
	  fileTitle:'附件上传',//附件label值
  
      // 表单数据 
      current: {}, 
      origin: {}, 
  
      // 表单项数据结构 
      scheme: { 
        Acc_GoodsDemage: { 
			DeptNo: { type: 'select', title: '专业部', dataSource: '1', dataSourceId: 'CdDeptInfo,deptname,deptno', verify: 'NotNull' },
			MajorNo: { type: 'select', title: '专业', dataSource: '1', dataSourceId: 'CdMajorInfo,majorname,majorno', verify: 'NotNull' }, 
			ClassNo: { type: 'select', title: '班级', dataSource: '1', dataSourceId: 'bjsj,classname,classno', verify: 'NotNull' }, 
			Dormitory: { type: 'select', title: '宿舍楼', dataSource: '1', dataSourceId: 'Acc_DormitoryData,name,id', verify: 'NotNull'  }, 
			Unit: { type: 'select', title: '单元', dataSource: '1', dataSourceId: 'Acc_UnitData,name,id', verify: 'NotNull' }, 
			Floor: { type: 'select', title: '楼层', dataSource: '1', dataSourceId: 'Acc_FloorData,name,id' , verify: 'NotNull' }, 
			RId: { type: 'select', title: '宿舍', dataSource: '1', dataSourceId: 'Acc_RoomData,name,id' , verify: 'NotNull'}, 
			DamageDescribe: { type: 'textarea', title: '损坏描述' , verify: 'NotNull'}, 
			Files: { type: "text", title: "附件上传" },
        }, 
  
      }, 
  
      // 数据源 
      dataSource: { 
        Acc_GoodsDemage: { 
            DeptNo: [],
            MajorNo: [], 
            ClassNo: [], 
            Dormitory: [], 
            Unit: [], 
            Floor: [], 
            RId: [], 
        }, 
  
      } 
    } 
  }, 
  
  async onLoad({ type, id }) { 
    await this.init(type, id) 
  }, 
  
  methods: { 
    // 页面初始化 
    async init(type, id) { 
		this.folderId=this.GUID();
		// console.log('附件随机文件夹id：'+this.folderId);
		
      this.LOADING('加载数据中...') 
  
      this.id = id 
      this.mode = type 
      this.edit = ['create', 'edit'].includes(this.mode) 
  
      // 拉取表单数据，同时拉取所有来自数据源的选单数据 
	  await Promise.all([ 
	    this.FETCH_DATASOURCE('CdDeptInfo').then(result => { 
	      this.dataSource.Acc_GoodsDemage.DeptNo = result.data.sort((a,b)=>{return a.deptsort-b.deptsort}).map(t => ({ text: t.deptname, value: t.deptno }))
	    }), 
	  		this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
	  		  this.dataSource.Acc_GoodsDemage.MajorNo = result.data.sort((a,b)=>{return a.majorno-b.majorno}).map(t => ({ text: t.majorname, value: t.majorno })) 
	  		}),  
	  		this.FETCH_DATASOURCE('bjsj').then(result => { 
	      this.dataSource.Acc_GoodsDemage.ClassNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.classname, value: t.classno })) 
	    }),  
	  		this.FETCH_DATASOURCE('Acc_DormitoryData').then(result => { 
	      this.dataSource.Acc_GoodsDemage.Dormitory = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
	    }),  
	  		this.FETCH_DATASOURCE('Acc_UnitData').then(result => { 
	      this.dataSource.Acc_GoodsDemage.Unit = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
	    }),  
	  		this.FETCH_DATASOURCE('Acc_FloorData').then(result => { 
	      this.dataSource.Acc_GoodsDemage.Floor = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
		}),  
	  		this.FETCH_DATASOURCE('Acc_RoomData').then(result => { 
	      this.dataSource.Acc_GoodsDemage.RId = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
	    }), 
	    
	    
	    () => {} 
	  ])
      await this.fetchForm() 
  
      this.ready = true
      this.HIDE_LOADING() 
    }, 
  
    // 加载表单数据 
    async fetchForm() { 
      if (this.mode === 'create') { 
        this.origin = await this.getDefaultForm() 
		
      } else { 
        const result = await this.HTTP_GET('learun/adms/LogisticsManagement/Acc_GoodsDemage/form', this.id) 
        this.origin = await this.formatFormData(result) 
      } 
	  this.current = this.COPY(this.origin) 
	  
	  //加载附件值数据
	  // console.log('附件值赋值前：'+this.getValue('Acc_GoodsDemage.Files'));
	  if (this.getValue('Acc_GoodsDemage.Files') == ""||this.getValue('Acc_GoodsDemage.Files') == undefined ||this.getValue('Acc_GoodsDemage.Files') == null) {
	  	this.setValue('Acc_GoodsDemage.Files',this.folderId);
		// console.log('附件值赋值后：'+this.getValue('Acc_GoodsDemage.Files'));
	  }else{
		  this.folderId=this.getValue('Acc_GoodsDemage.Files');
		  // console.log('文件夹id赋值后：'+this.folderId);
		  //请求‘获取附件列表’接口
		  this.fileList = await this.FETCH_FILEList(this.getValue('Acc_GoodsDemage.Files'));
	  }
	  
	  // console.log('origin:'+JSON.stringify(this.origin) )
	  // console.log('current:'+JSON.stringify(this.current))
    }, 
  
    // 点击 「编辑」、「重置」、「保存」、「删除」 按钮 
    async action(type) { 
      switch (type) { 
        case 'edit': 
          this.edit = true
          break
  
        case 'reset': 
          this.current = this.COPY(this.origin) 
          this.edit = false
          break
  
        case 'save': 
          const verifyResult = this.verifyForm() 
          if (verifyResult.length > 0) { 
            this.CONFIRM('表单验证失败', verifyResult.join('\n')) 
            return
          } 
  
          if (!(await this.CONFIRM('提交确认', '确定要提交本页表单内容吗？', true))) { 
            return
          } 
		  
  
          this.LOADING('正在提交...') 
          const postData = await this.getPostData(this.id) 
			// console.log('页面提交数据：'+JSON.stringify(postData));
			
          this.HTTP_POST('learun/adms/LogisticsManagement/Acc_GoodsDemage/save', postData, '表单提交保存失败').then(success => { 
            this.HIDE_LOADING() 
            if (!success) { 
              return
            } 
  
            this.EMIT('LogisticsManagementAcc_GoodsDemage-list-change') 
            this.NAV_BACK() 
            this.TOAST('提交保存成功') 
          }) 
          break
  
        case 'delete': 
          if (!(await this.CONFIRM('删除项目', '确定要删除本项吗？', true))) { 
            return
          } 
  
          this.LOADING('提交删除中...') 
          this.HTTP_POST('learun/adms/LogisticsManagement/Acc_GoodsDemage/delete', this.id, '删除失败').then(success => { 
            this.HIDE_LOADING() 
            if (!success) { 
              return
            } 
  
            this.EMIT('LogisticsManagementAcc_GoodsDemage-list-change') 
            this.NAV_BACK() 
            this.this.TOAST('删除成功', 'success') 
          }) 
          break
  
        default: break
      } 
    }, 
  
    // 获取表单值 
    getValue(path) { 
      return get(this.current, path) 
    }, 
  
    // 设置表单值 
    setValue(path, val) { 
      set(this.current, path, val) 
    },
	
	//多条件查询：宿舍楼改变事件
	async DormitoryChange(){
		if (this.getValue('Acc_GoodsDemage.Dormitory') != null && this.getValue('Acc_GoodsDemage.Dormitory') !=undefined && this.getValue('Acc_GoodsDemage.Dormitory') != "") {
			this.FETCH_DATASOURCE('Acc_UnitData').then(result => {
			  this.dataSource.Acc_GoodsDemage.Unit = result.data.sort((a,b)=>{return a.dno-b.dno}).filter(t=>t.parentid===this.getValue('Acc_GoodsDemage.Dormitory') ).map(t => ({ text: t.name, value: t.id })) 
			})
		}else{
			this.FETCH_DATASOURCE('Acc_UnitData').then(result => {
			  this.dataSource.Acc_GoodsDemage.Unit = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
			})
		}
		this.setValue('Acc_GoodsDemage.Unit','');
		this.setValue('Acc_GoodsDemage.Floor','');
		this.setValue('Acc_GoodsDemage.RId','');
	},//多条件查询：单元改变事件
	async UnitChange(){
		if (this.getValue('Acc_GoodsDemage.Unit') != null && this.getValue('Acc_GoodsDemage.Unit')!=undefined && this.getValue('Acc_GoodsDemage.Unit')!= "") {
			this.FETCH_DATASOURCE('Acc_FloorData').then(result => {
			  this.dataSource.Acc_GoodsDemage.Floor = result.data.sort((a,b)=>{return a.dno-b.dno}).filter(t=>t.parentid===this.getValue('Acc_GoodsDemage.Unit')).map(t => ({ text: t.name, value: t.id })) 
			})
		}else{
			this.FETCH_DATASOURCE('Acc_FloorData').then(result => {
			  this.dataSource.Acc_GoodsDemage.Floor = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
			})
		}
		this.setValue('Acc_GoodsDemage.Floor','');
		this.setValue('Acc_GoodsDemage.RId','');
	},
	//多条件查询：楼层改变事件
	async FloorChange(){
		if (this.getValue('Acc_GoodsDemage.Floor') != null && this.getValue('Acc_GoodsDemage.Floor')!=undefined && this.getValue('Acc_GoodsDemage.Floor') != "") {
			this.FETCH_DATASOURCE('Acc_RoomData').then(result => {
			  this.dataSource.Acc_GoodsDemage.RId = result.data.sort((a,b)=>{return a.dno-b.dno}).filter(t=>t.parentid===this.getValue('Acc_GoodsDemage.Floor')).map(t => ({ text: t.name, value: t.id })) 
			})
		}else{
			this.FETCH_DATASOURCE('Acc_RoomData').then(result => {
			  this.dataSource.Acc_GoodsDemage.RId = result.data.sort((a,b)=>{return a.parentid-b.parentid}).map(t => ({ text: t.name, value: t.id })) 
			})
		}
		this.setValue('Acc_GoodsDemage.RId','');
	},
	//多条件查询：专业部改变事件
	async DeptNoChange(){
		if (this.getValue('Acc_GoodsDemage.DeptNo') != null && this.getValue('Acc_GoodsDemage.DeptNo')!=undefined && this.getValue('Acc_GoodsDemage.DeptNo') != "") {
			this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
			  this.dataSource.Acc_GoodsDemage.MajorNo = result.data.sort((a,b)=>{return a.majorno-b.majorno}).filter(t=>t.deptno===this.getValue('Acc_GoodsDemage.DeptNo')).map(t => ({ text: t.majorname, value: t.majorno })) 
			})
		}else{
			this.FETCH_DATASOURCE('CdMajorInfo').then(result => {
			  this.dataSource.Acc_GoodsDemage.MajorNo = result.data.sort((a,b)=>{return a.majorno-b.majorno}).map(t => ({ text: t.majorname, value: t.majorno })) 
			})
		}
		this.setValue('Acc_GoodsDemage.MajorNo','');
		this.setValue('Acc_GoodsDemage.ClassNo','');
	},
	//多条件查询：专业改变事件
	async MajorNoChange(){
		if (this.getValue('Acc_GoodsDemage.MajorNo') != null && this.getValue('Acc_GoodsDemage.MajorNo')!=undefined && this.getValue('Acc_GoodsDemage.MajorNo') != "") {
			this.FETCH_DATASOURCE('bjsj').then(result => {
			  this.dataSource.Acc_GoodsDemage.ClassNo = result.data.sort((a,b)=>{return b.classno-a.classno}).filter(t=>t.majorno===this.getValue('Acc_GoodsDemage.MajorNo')).map(t => ({ text: t.classname, value: t.classno })) 
			})
		}else{
			this.FETCH_DATASOURCE('bjsj').then(result => {
			  this.dataSource.Acc_GoodsDemage.ClassNo = result.data.sort((a,b)=>{return b.classno-a.classno}).map(t => ({ text: t.classname, value: t.classno })) 
			})
		}
		this.setValue('Acc_GoodsDemage.ClassNo','');
	},
	
	
  } 
} 
</script> 