<template>
	<div class="tenant">
		<!-- <Banner /> -->
		<div class="content">
			<byTable
				:source="sourceList.data"
				:pagination="sourceList.pagination"
				:config="config"
				:loading="loading"
				highlight-current-row
				:selectConfig="selectConfig"
				:table-events="{
					//element talbe事件都能传
					select: select,
				}"
				:action-list="[
					{
						text: '添加',
						action: () => openModal('add'),
					},
				]"
				@get-list="getList"
			>
				<template #slotName="{ item }">
					{{ item.createTime }}
				</template>
			</byTable>
		</div>
		<el-dialog
			:title="modalType == 'add' ? '新增' : '编辑'"
			v-model="dialogVisible"
			width="400"
			v-loading="loading"
		>
			<byForm
				:formConfig="formConfig"
				:formOption="formOption"
				v-model="formData.data"
				:rules="rules"
				ref="byform"
			>
			</byForm>
			<template #footer>
				<el-button @click="dialogVisible = false" size="large"
					>取 消</el-button
				>
				<el-button
					type="primary"
					@click="submitForm('byform')"
					size="large"
					:loading="submitLoading"
				>
					确 定
				</el-button>
			</template>
		</el-dialog>
        <!-- 详情table -->
        <el-dialog
			:title="modalType == 'add' ? '新增' : '编辑'"
			v-model="dictCommonModal"
			width="1000"
			v-loading="loading"
		>
			<dictCommonDtl :data="dtlData"></dictCommonDtl>
			<template #footer>
				<el-button @click="dictCommonModal = false" size="large"
					>关闭</el-button
				>
				
			</template>
		</el-dialog>
	</div>
</template>
    
  <script setup>
/* eslint-disable vue/no-unused-components */
import { ElMessage, ElMessageBox } from 'element-plus'
import byTable from '@/components/byTable/index'
import byForm from '@/components/byForm/index'
import dictCommonDtl from './dictCommonDtl'
import { computed, defineComponent, ref } from 'vue'
const loading = ref(false)
const submitLoading = ref(false)
const dictCommonModal = ref(false)
const sourceList = ref({
	data: [],
	pagination: {
		total: 3,
		pageNum: 1,
		pageSize: 10,
	},
})
let dialogVisible = ref(false)
let roomDialogVisible = ref(false)
let modalType = ref('add')
let rules = ref({
	code: [{ required: true, message: '请输入字典编码', trigger: 'blur' }],
	name: [{ required: true, message: '请输入字典名称', trigger: 'blur' }],
	status: [
		{ required: true, message: '请选择字典状态', trigger: 'blur' },
	],
})
const { proxy } = getCurrentInstance()
const selectConfig = computed(() => {
	return [
		{
			label: '状态',
			prop: 'status',
			data: [
				{
					label: '禁用',
					value: '0',
				},
				{
					label: '启用',
					value: '1',
				},
			],
		},
	]
})
const config = computed(() => {
	return [
        {
			attrs: {
				label: '字典编码',
			},
			renderHTML(row) {
				return [
					{
						attrs: {
							label: row.code,
							type: 'primary',
							text: true,
						},
						el: 'button',
						click() {
							openDtlModal(row)
						},
					},
				]
			},
		},
		{
			attrs: {
				label: '字典名称',
				prop: 'name',
			},
		},

		{
			attrs: {
				label: '状态',
				width: 100,
				prop: 'status',
			},
			render(status) {
				//1审核中 2审核通过 3审核不通过
				return status == 0
					? '禁用'
					: '启用'
					
			},
		},
		{
			attrs: {
				label: '备注',
				prop: 'remark',
			},
		},
		{
			attrs: {
				label: '创建时间',
				prop: 'createTime',
			},
		},
		{
			attrs: {
				label: '操作',
				width: '200',
				align: 'right',
			},
			// 渲染 el-button，一般用在最后一列。
			renderHTML(row) {
				return [
					{
					  attrs: {
					    label: "修改",
					    type: "primary",
					    text: true,
					  },
					  el: "button",
					  click() {
					    getDtl(row);
					  },
					},
					{
						attrs: {
							label: row.status == 1 ? '禁用' : '启用',
							type: 'primary',
							text: true,
						},
						el: 'button',
						click() {
							changeStatus(row)
						},
					},
				]
			},
		},
	]
})
let dtlData = reactive({
	data: {},
})
let formData = reactive({
	data: {},
	treeData: [],
})
const formOption = reactive({
	inline: true,
	labelWidth: 100,
	itemWidth: 100,
	rules: [],
})
const byform = ref(null)
const treeData = ref([])
const formConfig = computed(() => {
	return [
		{
			type: 'input',
			prop: 'code',
			label: '字典编码',
			required: true,
		},
		{
			type: 'input',
			prop: 'name',
			label: '字典名称',
		},
        {
            label: '启用状态',
            prop: 'status',
            type: 'select',
            data: [
                {
                    label: '禁用',
                    value: '0',
                },
                {
                    label: '启用',
                    value: '1',
                },
            ],
        },
		{
			type: 'input',
			prop: 'remark',
			label: '备注',
			border: true,
		},
        
		
	]
})
const getList = async (req) => {
	sourceList.value.pagination = { ...sourceList.value.pagination, ...req }
	loading.value = true
	proxy
		.post('/dictCommonType/page', sourceList.value.pagination)
		.then((message) => {
			console.log(message)
			sourceList.value.data = message.rows
			sourceList.value.pagination.total = message.total
			setTimeout(() => {
				loading.value = false
			}, 200)
		})
}

const openDtlModal = (row) => {
    dtlData.data = {...row}
    dictCommonModal.value = true
}
const openModal = () => {
	dialogVisible.value = true
	modalType.value = 'add'
	formData.data = {}
}
const selection = ref({
	data: [],
})
const select = (_selection, row) => {
	selection.value.data = _selection
	console.log(_selection.length)
}

const tree = ref(null)
const submitTree = () => {
	proxy
		.post('/tenantInfo/bindingMenu', {
			tenantId: selection.value.data[0].tenantId,
			menuIdList: tree.value.getCheckedKeys(),
		})
		.then((res) => {
			ElMessage({
				message: '保存成功',
				type: 'success',
			})
			roomDialogVisible.value = false
		})
}

const submitForm = () => {
	console.log(byform.value)
	byform.value.handleSubmit((valid) => {
		submitLoading.value = true

		proxy
			.post('/dictCommonType/' + modalType.value, formData.data)
			.then((res) => {
				ElMessage({
					message: modalType.value == 'add' ? '添加成功' : '编辑成功',
					type: 'success',
				})
				dialogVisible.value = false
				submitLoading.value = false
				getList()
			}) // 失败回调
			.catch((err) => {
				submitLoading.value = false
			})
	})
}

const getDtl = (row) => {
	formData.data = { ...row }
	modalType.value = 'edit'
	dialogVisible.value = true
}

const changeStatus = (row) => {
	modalType.value = 'edit'
	let status = row.status ? 0 : 1
	proxy.post('/dictCommonType/edit', { ...row,status:(row.status === 0) ? 1 : 0 }).then((res) => {
		ElMessage({
            message: '操作成功',
            type: 'success',
        })
        getList()
	})
}
getList()
</script>
    
  <style lang="scss" scoped>
.tenant {
	padding: 20px;
}
</style>