<script lang="ts" setup>
	import { onMounted, ref } from 'vue'
	import { deleteAction, getAction, postAction, putAction } from '../../common/http';
	import { showConfirmDialog, showToast } from 'vant';

	const showPop = ref(false)
	const list = ref([{}] as any[])
	const listItem = ref({} as any)
	const form = ref({} as any)
	const form1 = ref({} as any)
	const showSecond = ref(false)

	onMounted(() => {
		init()
	})

	function init() {
		getAction('/craftCommentCategory').then((res : any) => {
			if (res.code === 200) {
				list.value = res.data
			}
		})
	}

	const onClickLeft = () => {
		history.back()
	}
	const poClickLeft = () => {
		showSecond.value = false
	}
	const onClickRight = () => {
		showPop.value = true
		form1.value = {}
	}
	const showLit = ref(false)

	const poClickRight = () => {
		showLit.value = true
		form.value = { content: [{}] }
	}

	//选择类型
	const onChange = (item : any) => {
		if (item.type === 'Select') {
			item.chooses = [{ value: '' }]
		} else {
			item.chooses = null
		}
	}

	//查看
	const toShowLit = (item : any) => {
		listItem.value = item
		showSecond.value = true
	}

	//编辑
	const EditCate = (item : any) => {
		showPop.value = true
		form1.value = JSON.parse(JSON.stringify(item))
	}
	const submit = () => {
		if (form1.value.categoryId) {
			putAction('/craftCommentCategory', { id: form1.value.categoryId, category: form1.value.category }).then((res : any) => {
				if (res.code === 200) {
					init()
					showPop.value = false
					showToast('编辑成功！')
				}
			})
		} else {
			postAction('/craftCommentCategory', { category: form1.value.category }).then((res : any) => {
				if (res.code === 200) {
					init()
					showPop.value = false
					showToast('提交成功！')
				}
			})
		}
	}

	const onSubmit = () => {
		postAction('/craftComment', { categoryId: listItem.value.categoryId, ...form.value }).then((res : any) => {
			if (res.code === 200) {
				init()
				listItem.value.subCategory.push(form.value)
				showLit.value = false
				showToast('提交成功！')
			}
		})
	}

	const del = (item : any) => {
		showConfirmDialog({
			title: '提示',
			message: '是否确认删除？',
		}).then(() => {
			let url = '/craftCommentCategory/' + item.categoryId
			deleteAction(url).then((res : any) => {
				if (res.code === 200) {
					init()
					showToast('删除成功！')
				} else {
					showToast(res.msg)
				}
			})
		})
			.catch(() => {
				// on cancel
			});
	}
	const delSecond = (item : any, index : any) => {
		showConfirmDialog({
			title: '提示',
			message: '是否确认删除？',
		}).then(() => {
			let url = '/craftComment/' + item.id
			deleteAction(url).then((res : any) => {
				if (res.code === 200) {
					init()
					listItem.value.subCategory.splice(index, 1)
					showToast('删除成功！')
				}
			})
		})
			.catch(() => {
				// on cancel
			});
	}
</script>

<template>
	<view class="flex">
		<van-nav-bar title="工艺要求维护" left-text="返回" left-arrow right-text="新增" @click-left="onClickLeft"
			@click-right="onClickRight" />
		<view class="grid-container">
			<view class="grid-item">大类</view>
			<view class="grid-item">操作</view>
		</view>
		<view class="content">
			<view class="grid-container" v-for="(item,index) in list" :key="index">
				<view class="grid-item">{{item.category}}</view>
				<view class="grid-item" style="display: flex;align-items: center;justify-content: space-between;">
					<text @click="EditCate(item)">编辑</text>
					<text @click="toShowLit(item)">查看</text>
					<text style="color: red;" @click="del(item)">删除</text>
				</view>
			</view>
		</view>
	</view>

	<van-popup v-model:show="showSecond" style="width: 100%">
		<view class="flex">
			<van-nav-bar title="工艺要求维护" left-text="返回" left-arrow @click-left="poClickLeft" right-text="新增"
				@click-right="poClickRight" />
			<h3>{{listItem.category}}</h3>
			<view class="grid-container">
				<view class="grid-item">小类</view>
				<view class="grid-item">操作</view>
			</view>
			<view class="content">
				<view class="grid-container" v-for="(item,index) in listItem.subCategory" :key="index">
					<view class="grid-item">{{item.subCategory}}</view>
					<view class="grid-item">
						<text style="color: red;" @click="delSecond(item,index)">删除</text>
					</view>
				</view>
			</view>
		</view>
	</van-popup>

	<van-popup v-model:show="showPop" style="width: 80%" round>
		<view>
			<h3 style="text-align: center">{{form1.categoryId?'编辑':'新增'}}</h3>
			<van-form @submit="submit">
				<van-cell-group inset>
					<van-field v-model="form1.category" name="大类" label="大类" colon label-width="4em"
						:rules="[{ required: true, message: '请填写' }]" />
				</van-cell-group>
				<view class="a-c">
					<van-button type="danger" @click="showPop=false">取消</van-button>
					<van-button type="primary" native-type="submit">确认</van-button>
				</view>
			</van-form>
		</view>
	</van-popup>

	<van-popup v-model:show="showLit" style="width: 80%" round>
		<view>
			<van-form @submit="onSubmit">
				<van-cell-group inset>
					<van-field v-model="form.subCategory" name="小类名称" label="小类名称" colon label-width="5em"
						:rules="[{ required: true, message: '请填写' }]" />
					<view class="a-b">
						<van-button type="primary" @click="form.content.push({})">出厂需上传</van-button>
					</view>
					<view v-for="(item,index) in form.content" :key="index">
						<view class="a-d">
							<van-icon name="clear" color="red" size="25" @click="form.content.splice(index,1)" />
							<van-field v-model="item.name" name="上传项名称" label="上传项名称" colon label-width="6em"
								:rules="[{ required: true, message: '请填写' }]" />
						</view>
						<van-field name="上传项类型" label="上传项类型" type="number" colon label-width="6.5em" class="bor-n"
							:rules="[{ required: true, message: '请填写' }]">
							<template #input>
								<van-radio-group v-model="item.type" direction="horizontal" @change="onChange(item)">
									<van-radio name="Input">填空</van-radio>
									<van-radio name="Select">选择</van-radio>
								</van-radio-group>
							</template>
						</van-field>
						<template v-if="item.type=='Input'">
							<van-field name="填写内容" label="填写内容" colon label-width="6.5em" class="bor-n">
								<template #input>
									<van-checkbox-group v-model="item.blank" direction="horizontal" shape="square">
										<van-checkbox name="Text">文字</van-checkbox>
										<van-checkbox name="File">图片</van-checkbox>
									</van-checkbox-group>
								</template>
							</van-field>
						</template>
						<template v-for="(itemSecond,indexSecond) in item.chooses" :key="indexSecond"
							v-if="item.type=='Select'">
							<view class="a-d-1">
								<van-icon name="add" color="red" size="25" v-if="indexSecond===0"
									@click="item.chooses.push({})" />
								<van-icon name="clear" color="red" size="25" v-if="indexSecond!=0"
									@click="item.chooses.splice(indexSecond,1)" />
								<van-field v-model="itemSecond.value" name="选项内容" label="选项内容" colon label-width="5em"
									:rules="[{ required: true, message: '请填写' }]" />
							</view>
						</template>
						<van-field name="是否必填" label="是否必填" colon label-width="6.5em" class="bor-n"
							:rules="[{ required: true, message: '请填写' }]">
							<template #input>
								<van-radio-group v-model="item.necessary" direction="horizontal">
									<van-radio name="true">必填</van-radio>
									<van-radio name="false">选填</van-radio>
								</van-radio-group>
							</template>
						</van-field>
					</view>
				</van-cell-group>
				<view class="a-c">
					<van-button type="danger" @click="showPop=false">取消</van-button>
					<van-button type="primary" native-type="submit">确认</van-button>
				</view>
			</van-form>
		</view>
	</van-popup>
</template>

<style scoped lang="scss">
	.flex {
		display: flex;
		flex-direction: column;
		height: 100vh;
		overflow: hidden;
		margin: 0 15rpx;

		.van-nav-bar {
			width: 100%;
		}

		.grid-container {
			display: grid;
			grid-template-columns: 2fr 1fr;

			.grid-item {
				border: 1rpx solid #f2f2f2;
				text-align: center;
				padding: 5rpx;
			}
		}

		.content {
			flex: 1;
			overflow-y: scroll;
		}
	}

	::v-deep .van-cell-group--inset {
		margin: 0;
	}

	::v-deep .van-popup--center {
		max-width: 100vw !important;
	}

	.a-b {
		margin: 10rpx;

		::v-deep .van-button--normal {
			padding: 5px 8px;
			height: 30px;
		}
	}

	::v-deep .van-field {
		font-size: 16px;
	}

	::v-deep .van-field__body {
		border-bottom: 1rpx solid #d7d7d7;
	}

	::v-deep .van-field__control {
		text-align: center;
		font-size: 16px;
	}

	.bor-n {
		::v-deep .van-field__body {
			border: none;
		}
	}

	::v-deep .van-field__label {
		text-align: end !important;
	}

	.a-c {
		display: flex;
		align-items: center;
		justify-content: space-around;
		margin: 30rpx;

		::v-deep .van-button--normal {
			padding: 0 15rpx !important;
			height: 60rpx !important;
		}
	}

	.a-d-1 {
		display: flex;
		align-items: center;
		margin-left: 30rpx;

		::v-deep .van-button--normal {
			padding: 8rpx;
			height: 50rpx;
			width: 7em;
		}

		::v-deep .van-cell {
			padding: 10rpx 0;
		}
	}

	.a-d {
		display: flex;
		align-items: center;

		::v-deep .van-button--normal {
			padding: 8rpx;
			height: 50rpx;
			width: 7em;
		}

		::v-deep .van-cell {
			padding: 10rpx 0;
		}
	}
</style>