<template>
	<div class="common-page page-t1">
		<div class="option page-row">
			<table-filter
				ref="filter" 
				:form="form"
				:Dict="Dict"
				:rules="rules"
				:config="form.config"
				:loadData="loadData"
			/>
		</div>
		<div class="panel-bottom page-row">
			<div class="ctin-box">
				<div class="content-within">
					<div class="content-fix">
						<div class="toolbar">
							<div>
								<el-button v-for="(item, key) in form.config.otherBtn" size="mini" :type="item.type" :icon="item.icon" @click="item.callback.call(_self, $event)">{{item.name}}</el-button>
							</div>
							<div>
								<el-button v-for="(item, key) in form.config.rightBtn" size="mini" :type="item.type" :icon="item.icon" @click="item.callback.call(_self, $event)">{{item.name}}</el-button>
							</div>
						</div>
						<!-- 表格渲染 -->
						<cu-table
							ref="cuTable" 
							:table="table"
							:Dict="Dict"
							:config="form.config"
							:loadData="loadData"
						/>
					</div>
				</div>
			</div>
		</div>

		<!-- 表单渲染 -->
		<cu-form
			ref="cuForm" 
			:form="form"
			:Dict="Dict"
			:rules="rules"
			:submit="submitForm" 
			:cancel="cancelForm"
			:watchKeys="['paperfilename']"
		/>
	</div>
</template>

<script>
import { reqApi, Config } from '@/assets/js/httpApi.js';
import { Tools } from '@/assets/js/common.js';
import DateRangePicker from '@/components/DateRangePicker';
import TableFilter from '@/components/TableFilter';
import cuForm from '@/components/cuForm';
import cuTable from '@/components/cuTable';

export default {
	name: 'Dashboard',
	components: {
		DateRangePicker, TableFilter, cuForm, cuTable
	},
	data() {
		return {
			Dict:{selectList:[]},
			table:{
				page: 1,
				size: 10,
				total: 0,
				loading: false,
				dataList:[],
			},
			rules: {},
			form: {
				title:'', visible:false, reqType:'add', historyDialog:false,
				status:{cu:0},
				query:{},
				search:{},
				item:{},
				file:0,
				config:{},
			},
		}
	},
	created(){
		// 获取基本信息
		this.pageApi = Config.getModuleInfo(this);
		this.Dict = this.pageApi.Dict;
		this.form.config = this.pageApi.config;
		this.rules = reqApi.getRules(this.Dict.baseInfo) || (this.Dict.rules || {});
		this.pageApi.created && this.pageApi.created();
	},
	mounted() {
		this.$nextTick(() => {
			this.loadData();
		});

		// 获取选择列表字典
		var selectList = this.Dict.selectList;
		Tools.asyncLoop.call(this, selectList, function(key, value, next){
			if(typeof value === 'function'){
				value.call(this.Dict).then(function(res){
					selectList[key] = res; next();
				})
			}else{next()};
		});
	},
	methods: {
		loadData:reqApi.common.getRequst,
		cancelForm(){
			this.form.visible = false;
		},
		submitForm(form, item){
			reqApi.common.submitForm.call(this, form, item);
		},
	}
}
</script>
<style rel="stylesheet/scss" lang="scss" scope>
</style>
