yh-pub 2.0.10 → 2.0.12

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (41) hide show
  1. package/AdminLogin-_bZY7eK8.js +149 -0
  2. package/AdminLogin-_bZY7eK8.js.map +1 -0
  3. package/{Error-BBHnAI0J.js → Error-iU10G3t1.js} +2 -2
  4. package/{Error-BBHnAI0J.js.map → Error-iU10G3t1.js.map} +1 -1
  5. package/{Error401-B9zZmLGl.js → Error401-wgvbeg3C.js} +3 -3
  6. package/{Error401-B9zZmLGl.js.map → Error401-wgvbeg3C.js.map} +1 -1
  7. package/{Error404-Zs5aZibY.js → Error404-BXcBcCbK.js} +3 -3
  8. package/{Error404-Zs5aZibY.js.map → Error404-BXcBcCbK.js.map} +1 -1
  9. package/{Error500-BeHC7MB0.js → Error500-BgGL-4HG.js} +3 -3
  10. package/{Error500-BeHC7MB0.js.map → Error500-BgGL-4HG.js.map} +1 -1
  11. package/{HomeIndex-Dc7VZnGu.js → HomeIndex-rVqHNqCL.js} +2 -2
  12. package/{HomeIndex-Dc7VZnGu.js.map → HomeIndex-rVqHNqCL.js.map} +1 -1
  13. package/{IconExplorer-Dr5DHNqH.js → IconExplorer-Brxz8hDs.js} +2 -2
  14. package/{IconExplorer-Dr5DHNqH.js.map → IconExplorer-Brxz8hDs.js.map} +1 -1
  15. package/Index-SF8odcU0.js +5 -0
  16. package/Index-SF8odcU0.js.map +1 -0
  17. package/MainLogin-DJn8YWhN.js +162 -0
  18. package/MainLogin-DJn8YWhN.js.map +1 -0
  19. package/{MenuManage-CE19Barl.js → MenuManage-CkXmt5wg.js} +2 -2
  20. package/{MenuManage-CE19Barl.js.map → MenuManage-CkXmt5wg.js.map} +1 -1
  21. package/{OrgManage-BDq94j_4.js → OrgManage-EPdk3YY5.js} +2 -2
  22. package/{OrgManage-BDq94j_4.js.map → OrgManage-EPdk3YY5.js.map} +1 -1
  23. package/{RoleManage-B96hAIoM.js → RoleManage-0zwj9Ew3.js} +2 -2
  24. package/{RoleManage-B96hAIoM.js.map → RoleManage-0zwj9Ew3.js.map} +1 -1
  25. package/{SysConfig-zkAs620Z.js → SysConfig-BBvexnOf.js} +2 -2
  26. package/{SysConfig-zkAs620Z.js.map → SysConfig-BBvexnOf.js.map} +1 -1
  27. package/{TenantList-C9wXnIOV.js → TenantList-CUJhZ23v.js} +2 -2
  28. package/{TenantList-C9wXnIOV.js.map → TenantList-CUJhZ23v.js.map} +1 -1
  29. package/{index-DsHX4-H-.js → index-vgdcf7LB.js} +903 -1082
  30. package/index-vgdcf7LB.js.map +1 -0
  31. package/index.es.js +1 -1
  32. package/login-bg-Disn69VD.js +5 -0
  33. package/login-bg-Disn69VD.js.map +1 -0
  34. package/package.json +5 -3
  35. package/AdminLogin-WIwNqoIe.js +0 -148
  36. package/AdminLogin-WIwNqoIe.js.map +0 -1
  37. package/Index-MG2wd36s.js +0 -5
  38. package/Index-MG2wd36s.js.map +0 -1
  39. package/MainLogin-DrvzRbd9.js +0 -161
  40. package/MainLogin-DrvzRbd9.js.map +0 -1
  41. package/index-DsHX4-H-.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"SysConfig-zkAs620Z.js","sources":["../components/common/basic/ImageBase64Choose.vue","../components/business/admin/config/SysConfig.vue"],"sourcesContent":["<template>\n <div\n class=\"image-base64-choose\"\n @dragover.prevent=\"handleDragOver\"\n @dragleave=\"handleDragLeave\"\n @drop.prevent=\"handleDrop\"\n :class=\"{dragover: isDragging}\">\n <div class=\"preview-area\">\n <img\n v-if=\"previewImage\"\n :src=\"previewImage\"\n alt=\"Preview\" />\n <div\n v-else\n class=\"upload-prompt\">\n <span>{{ ct('点击或拖拽图片到此区域') }}</span>\n </div>\n </div>\n\n <div class=\"overlay-layer\">\n <input\n type=\"file\"\n accept=\"image/*\"\n @change=\"handleFileSelect\"\n ref=\"fileInput\" />\n </div>\n <div\n class=\"delete-btn\"\n v-if=\"previewImage\"\n @click=\"handleDelete\">\n <YhIcon name=\"close\"></YhIcon>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, watch} from 'vue';\n import {ct} from '../../../utils/i18nHelp';\n\n const props = defineProps({\n modelValue: String,\n });\n\n const emit = defineEmits(['update:modelValue']);\n\n const previewImage = ref(props.modelValue || '');\n const isDragging = ref(false);\n const fileInput = ref<HTMLInputElement | null>(null);\n\n // 处理文件选择通用方法\n const processFile = (file: File) => {\n if (!file.type.startsWith('image/')) {\n alert(ct('请选择图片文件'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n previewImage.value = base64;\n emit('update:modelValue', base64);\n };\n reader.readAsDataURL(file);\n };\n\n // 拖拽处理\n const handleDragOver = () => {\n isDragging.value = true;\n };\n\n const handleDragLeave = () => {\n isDragging.value = false;\n };\n\n const handleDrop = (e: DragEvent) => {\n isDragging.value = false;\n const files = e.dataTransfer?.files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n };\n\n // 文件选择处理\n const handleFileSelect = (e: Event) => {\n const input = e.target as HTMLInputElement;\n if (input.files && input.files[0]) {\n processFile(input.files[0]);\n input.value = ''; // 清除选择以便重复选择相同文件\n }\n };\n\n // 删除处理\n const handleDelete = () => {\n previewImage.value = '';\n emit('update:modelValue', '');\n };\n\n // 监听外部modelValue变化\n watch(\n () => props.modelValue,\n (newVal) => {\n previewImage.value = newVal || '';\n }\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .image-base64-choose {\n position: relative;\n width: 300px;\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.3s;\n\n &.dragover {\n border-color: #409eff;\n opacity: 0.5;\n }\n\n .preview-area {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n\n .upload-prompt {\n text-align: center;\n color: #999;\n font-size: 14px;\n }\n }\n\n .overlay-layer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n\n input[type='file'] {\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n }\n\n .delete-btn {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n width: 20px;\n height: 30px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n z-index: 2;\n\n &:hover {\n background: rgba(0, 0, 0, 0.7);\n }\n }\n }\n</style>\n","<template>\n <div class=\"sys-config-list-container\">\n <div class=\"sys-config-list-actions\">\n <div class=\"sys-config-list-conditions\">\n <el-form inline>\n <el-form-item :label=\"ct('名称')\">\n <el-input\n v-model=\"listForm.name\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选名称')\"></el-input>\n </el-form-item>\n <el-form-item :label=\"ct('编码')\">\n <el-input\n v-model=\"listForm.code\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选编码')\"></el-input>\n </el-form-item>\n <el-form-item>\n <el-button @click=\"resetList\">{{ ct('重置') }}</el-button>\n <el-button\n type=\"primary\"\n @click=\"getDataList\">\n {{ ct('搜索') }}\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n <el-button\n type=\"primary\"\n @click=\"addOne\">\n <i class=\"iconfont icon-add\"></i>\n {{ ct('新增') }}\n </el-button>\n </div>\n <el-table\n ref=\"tableRef\"\n v-loading=\"tableLoading\"\n :data=\"dataList\"\n row-key=\"code\"\n :row-class-name=\"tableRowClassName\"\n @row-click=\"rowClickHandler\">\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n type=\"index\"\n label=\"#\"\n width=\"60\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('名称')\"\n prop=\"name\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('编码')\"\n prop=\"code\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('值')\"\n min-width=\"150\">\n <template v-slot=\"{row: {type, value}}\">\n <el-image\n preview-teleported\n v-if=\"type === SysConfigType.IMAGE\"\n :src=\"value\"\n :preview-src-list=\"[value]\"\n class=\"table-el-image\"></el-image>\n <div\n class=\"table-color-block\"\n v-else-if=\"type === SysConfigType.COLOR\"\n :style=\"{backgroundColor: value}\">\n {{ value }}\n </div>\n <el-tag\n v-else-if=\"type === SysConfigType.BOOLEAN\"\n :type=\"value === 'Y' ? 'success' : 'info'\">\n {{ value === 'Y' ? ct('是') : ct('否') }}\n </el-tag>\n <template v-else=\"type === SysConfigType.TEXT\">{{ value }}</template>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('是否可用')\"\n width=\"80\">\n <template v-slot=\"{row}\">\n {{ row.active === 'Y' ? ct('启用') : ct('禁用') }}\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('说明')\"\n prop=\"description\"\n min-width=\"100\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('操作')\"\n width=\"220\"\n align=\"center\">\n <template #default=\"{row, $index}\">\n <el-button\n link\n type=\"primary\"\n @click.stop=\"editOne(row, $index)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n v-if=\"row.active === 'N'\"\n link\n type=\"success\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'Y')\">\n {{ ct('启用') }}\n </el-button>\n <el-button\n v-else\n link\n type=\"danger\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'N')\">\n {{ ct('禁用') }}\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n background\n :page-sizes=\"[10, 50, 100, 200, 500]\"\n v-model:page-size=\"listForm.pageSize\"\n :total=\"listForm.total\"\n v-model:current-page=\"listForm.pageNum\"\n layout=\"sizes,prev,pager,next,total\"></el-pagination>\n </div>\n <el-dialog\n class=\"form-drawer\"\n v-model=\"formShow\"\n @close=\"cancelForm\"\n draggable\n :title=\"formData.id ? ct('编辑配置') : ct('新增配置')\">\n <el-form\n label-position=\"top\"\n ref=\"formRef\"\n :model=\"formData\"\n :rules=\"formRules\">\n <el-row gutter=\"10\">\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('名称')\"\n prop=\"name\">\n <el-input\n v-model=\"formData.name\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('编码')\"\n prop=\"code\">\n <el-autocomplete\n v-model=\"formData.code\"\n :fetch-suggestions=\"queryCodeSuggestions\"\n :placeholder=\"ct('请输入或选择配置编码')\"\n clearable\n style=\"width: 100%\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"16\">\n <el-form-item\n :label=\"ct('值类型')\"\n prop=\"type\">\n <el-radio-group\n v-model=\"formData.type\"\n @change=\"formData.value = ''\">\n <el-radio :label=\"SysConfigType.TEXT\">{{ ct('文字') }}</el-radio>\n <el-radio :label=\"SysConfigType.NUMBER\">{{ ct('数字') }}</el-radio>\n <el-radio :label=\"SysConfigType.IMAGE\">{{ ct('图片') }}</el-radio>\n <el-radio :label=\"SysConfigType.COLOR\">{{ ct('颜色') }}</el-radio>\n <el-radio :label=\"SysConfigType.DATETIME\">{{ ct('日期时间') }}</el-radio>\n <el-radio :label=\"SysConfigType.BOOLEAN\">{{ ct('布尔值') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col\n :span=\"8\"\n prop=\"active\">\n <el-form-item :label=\"ct('是否可用')\">\n <el-radio-group v-model=\"formData.active\">\n <el-radio label=\"Y\">{{ ct('启用') }}</el-radio>\n <el-radio label=\"N\">{{ ct('禁用') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('值')\"\n prop=\"value\">\n <el-input\n v-model=\"formData.value\"\n v-if=\"formData.type === SysConfigType.TEXT\"\n clearable></el-input>\n <el-input-number\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.NUMBER\"></el-input-number>\n <image-base64-choose\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.IMAGE\"></image-base64-choose>\n <el-input\n v-else-if=\"formData.type === SysConfigType.COLOR\"\n v-model=\"formData.value\"\n clearable>\n <template #prefix>\n <el-color-picker\n color-format=\"hex\"\n v-model=\"formData.value\"></el-color-picker>\n </template>\n </el-input>\n <el-date-picker\n v-else-if=\"formData.type === SysConfigType.DATETIME\"\n v-model=\"formData.value\"\n type=\"datetime\"\n :placeholder=\"ct('选择日期时间')\"></el-date-picker>\n <el-switch\n v-else-if=\"formData.type === SysConfigType.BOOLEAN\"\n v-model=\"booleanValue\"\n :active-text=\"ct('启用')\"\n :inactive-text=\"ct('禁用')\"\n :active-value=\"true\"\n :inactive-value=\"false\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('说明')\"\n prop=\"description\">\n <el-input\n type=\"textarea\"\n v-model=\"formData.description\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <div class=\"sys-config-form-actions\">\n <el-button\n @click=\"prevOne\"\n text\n :disabled=\"cannotPrevItem\">\n {{ ct('上一个') }}(Alt + ←)\n </el-button>\n <el-button\n type=\"primary\"\n plain\n @click=\"cancelForm\">\n {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"saveOne\">\n {{ ct('保存') }}(Ctrl + S)\n </el-button>\n <el-button\n @click=\"nextOne\"\n text\n :disabled=\"cannotNextItem\">\n {{ ct('下一个') }}(ALT + →)\n </el-button>\n </div>\n </template>\n </el-dialog>\n</template>\n<script setup lang=\"ts\">\n import {reactive, ref, onMounted, onUnmounted, watch, computed} from 'vue';\n import {ElMessage} from 'element-plus';\n import ImageBase64Choose from '../../../common/basic/ImageBase64Choose.vue';\n import {httpRequest as http} from 'yh-client';\n import {ct} from '../../../../utils/i18nHelp';\n\n const tableRef = ref();\n const formRef = ref();\n const tableLoading = ref(false);\n\n enum SysConfigType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n IMAGE = 'IMAGE',\n COLOR = 'COLOR',\n DATETIME = 'DATETIME',\n BOOLEAN = 'BOOLEAN',\n }\n\n interface SysConfig {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n interface PageResponse {\n records: SysConfig[];\n total: number;\n }\n\n interface SysConfigForm {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n const listForm = reactive({\n name: '',\n code: '',\n pageNum: 1,\n pageSize: 10,\n total: 0,\n });\n\n const dataList = ref<any>([]);\n const tableRowClassName = (row: any, rowIndex: any) => {\n if (row.active === 'N') {\n return 'disabled-row';\n }\n return '';\n };\n function getDataList(isReset = false) {\n let {name, code, pageNum, pageSize} = listForm;\n if (isReset) {\n pageNum = 1;\n }\n tableLoading.value = true;\n http\n .request({\n url: '/parameter/list',\n method: 'POST',\n type: 'json',\n data: {\n name,\n code,\n pageNum,\n pageSize,\n },\n })\n .then((res: any) => {\n const data = res.data.data as PageResponse;\n dataList.value = data.records || [];\n listForm.total = data.total ?? data.records?.length ?? 0;\n })\n .catch((error) => {\n console.error('获取配置列表失败:', error);\n ElMessage.error(ct('获取配置列表失败,请稍后重试'));\n })\n .finally(() => {\n tableLoading.value = false;\n });\n }\n\n watch(\n () => [listForm.pageNum, listForm.pageSize],\n () => {\n getDataList();\n }\n );\n\n function rowClickHandler(row: any) {\n tableRef.value?.toggleRowSelection(row);\n }\n\n function resetList() {\n listForm.code = '';\n listForm.name = '';\n listForm.pageNum = 1;\n listForm.total = 0;\n getDataList();\n }\n\n const formDataIndex = ref();\n const formShow = ref(false);\n const cannotNextItem = computed(() => {\n return formDataIndex.value >= dataList.value.length - 1;\n });\n const cannotPrevItem = computed(() => {\n return formDataIndex.value <= 0;\n });\n\n const formData = reactive<SysConfigForm>({\n id: undefined,\n code: '',\n name: '',\n type: SysConfigType.TEXT,\n active: 'Y',\n value: '',\n description: '',\n });\n\n const formRules = reactive({\n code: [{required: true, type: 'string', message: ct('请输入编码')}],\n name: [{required: true, type: 'string', message: ct('请输入名称')}],\n type: [{required: true, type: 'string', message: ct('请选择类型')}],\n active: [{required: true, type: 'string', message: ct('请选择是否可用')}],\n value: [{required: true, type: 'string', message: ct('请输入参数配置内容')}],\n });\n\n // 布尔值计算属性(用于前端显示 true/false,后端存储 Y/N)\n const booleanValue = computed({\n get: () => formData.value === 'Y',\n set: (val: boolean) => {\n formData.value = val ? 'Y' : 'N';\n }\n });\n\n // 固定建议列表\n const CODE_SUGGESTIONS = [\n {value: 'logoUrl', label: 'logoUrl - Logo图片路径'},\n {value: 'miniLogoUrl', label: 'miniLogoUrl - 迷你Logo路径'},\n {value: 'loginBg', label: 'loginBg - 登录背景图'},\n {value: 'moduleFilter', label: 'moduleFilter - 模块筛选开关'},\n {value: 'homePath', label: 'homePath - 首页路径'},\n {value: 'ADMIN_MENU_CONFIG_KEY', label: 'ADMIN_MENU_CONFIG_KEY - 菜单配置'},\n ];\n\n // 查询编码建议\n const queryCodeSuggestions = (queryString: string, cb: (suggestions: any[]) => void) => {\n const results = queryString\n ? CODE_SUGGESTIONS.filter((item) =>\n item.value.toLowerCase().includes(queryString.toLowerCase())\n )\n : CODE_SUGGESTIONS;\n cb(results);\n };\n function cancelForm() {\n formRef.value?.resetFields();\n formDataIndex.value = 0;\n formData.id = undefined;\n formShow.value = false;\n }\n\n function addOne() {\n formData.id = undefined;\n formData.code = '';\n formData.name = '';\n formData.type = SysConfigType.TEXT;\n formData.active = 'Y';\n formData.value = '';\n formData.description = '';\n formShow.value = true;\n }\n\n function prevOne() {\n if (!cannotPrevItem.value) {\n let index = formDataIndex.value - 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function editOne(item: any, index: any) {\n formDataIndex.value = index;\n formData.id = item.id;\n formData.code = item.code;\n formData.name = item.name;\n formData.type = item.type || SysConfigType.TEXT;\n formData.active = item.active;\n formData.value = item.value;\n formData.description = item.description;\n formShow.value = true;\n }\n\n function nextOne() {\n if (!cannotNextItem.value) {\n let index = formDataIndex.value + 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function saveOne() {\n let isAdd = !formData.id;\n let url = 'parameter/save';\n formRef.value?.validate().then((errMap: any) => {\n if (!errMap) {\n let data: any = {\n ...formData,\n };\n if (isAdd) {\n data.id = undefined;\n }\n http\n .request({\n url,\n method: 'POST',\n type: 'json',\n data,\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n ElMessage.success(data.msg);\n if (!isAdd) {\n dataList.value[formDataIndex.value] = {\n ...formData,\n };\n nextOne();\n } else {\n cancelForm();\n }\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('保存配置失败:', error);\n ElMessage.error(ct('保存失败,请稍后重试'));\n });\n }\n });\n }\n\n function updateActiveStatus(id: number, index: number, active: 'Y' | 'N') {\n http\n .request({\n url: '/parameter/save',\n method: 'POST',\n type: 'json',\n data: {id, active},\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n const message = active === 'Y' ? ct('启用成功') : ct('禁用成功');\n ElMessage.success(message);\n dataList.value[index].active = active;\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('更新状态失败:', error);\n ElMessage.error(ct('操作失败,请稍后重试'));\n });\n }\n\n // 键盘事件处理函数\n const handleKeydown = (e: KeyboardEvent) => {\n const {key, ctrlKey, altKey} = e;\n if (formShow.value) {\n if (key === 's' && ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n saveOne();\n }\n if (key === 'ArrowRight' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n nextOne();\n }\n if (key === 'ArrowLeft' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n prevOne();\n }\n }\n };\n\n onMounted(() => {\n getDataList();\n window.addEventListener('keydown', handleKeydown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleKeydown);\n });\n</script>\n<style lang=\"scss\">\n .sys-config-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n .sys-config-list-actions {\n padding: 8px 16px;\n box-sizing: border-box;\n display: flex;\n .sys-config-list-conditions {\n padding: 0 8px;\n flex: 1;\n .el-form--inline .el-form-item {\n margin-bottom: 0;\n margin-right: 18px;\n }\n }\n }\n .sys-config-list-actions + .sys-config-list-actions {\n padding-top: 0;\n }\n .el-table {\n flex: 1;\n .table-el-image {\n width: auto;\n height: 30px;\n }\n .table-color-block {\n width: 100px;\n height: 30px;\n display: inline-flex;\n color: white;\n align-items: center;\n justify-content: center;\n }\n }\n .el-pagination {\n padding: 16px 16px 0 16px;\n }\n }\n .sys-config-form-actions {\n display: flex;\n .el-button {\n flex: 1;\n }\n }\n .el-table .disabled-row {\n --el-table-tr-bg-color: var(--el-color-info-light-7);\n }\n</style>\n"],"names":["props","__props","emit","__emit","previewImage","ref","isDragging","fileInput","processFile","file","ct","reader","e","base64","_a","handleDragOver","handleDragLeave","handleDrop","files","handleFileSelect","input","handleDelete","watch","newVal","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_openBlock","_hoisted_3","_unref","_hoisted_4","_createVNode","_component_YhIcon","tableRef","formRef","tableLoading","listForm","reactive","dataList","tableRowClassName","row","rowIndex","getDataList","isReset","name","code","pageNum","pageSize","http","res","data","error","ElMessage","rowClickHandler","resetList","formDataIndex","formShow","cannotNextItem","computed","cannotPrevItem","formData","formRules","booleanValue","val","CODE_SUGGESTIONS","queryCodeSuggestions","queryString","cb","results","item","cancelForm","addOne","prevOne","index","editOne","nextOne","saveOne","isAdd","url","errMap","updateActiveStatus","id","active","message","handleKeydown","key","ctrlKey","altKey","onMounted","onUnmounted","_hoisted_2","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button","_createTextVNode","_createBlock","_component_el_table","_component_el_table_column","type","value","_component_el_image","_component_el_tag","_Fragment","_withCtx","_toDisplayString","$index","_withModifiers","_component_el_pagination","_component_el_dialog","_component_el_row","_component_el_col","_component_el_autocomplete","_component_el_radio_group","_component_el_radio","_component_el_input_number","ImageBase64Choose","_component_el_color_picker","_component_el_date_picker","_component_el_switch"],"mappings":";;;;;;;;;;;;;;AAuCE,UAAMA,IAAQC,GAIRC,IAAOC,GAEPC,IAAeC,EAAIL,EAAM,cAAc,EAAE,GACzCM,IAAaD,EAAI,EAAK,GACtBE,IAAYF,EAA6B,IAAI,GAG7CG,IAAc,CAACC,MAAe;AAClC,UAAI,CAACA,EAAK,KAAK,WAAW,QAAQ,GAAG;AACnC,cAAMC,EAAG,SAAS,CAAC;AACnB;AAAA,MACF;AAEA,YAAMC,IAAS,IAAI,WAAA;AACnB,MAAAA,EAAO,SAAS,CAACC,MAAM;;AACrB,cAAMC,KAASC,IAAAF,EAAE,WAAF,gBAAAE,EAAU;AACzB,QAAAV,EAAa,QAAQS,GACrBX,EAAK,qBAAqBW,CAAM;AAAA,MAClC,GACAF,EAAO,cAAcF,CAAI;AAAA,IAC3B,GAGMM,IAAiB,MAAM;AAC3B,MAAAT,EAAW,QAAQ;AAAA,IACrB,GAEMU,IAAkB,MAAM;AAC5B,MAAAV,EAAW,QAAQ;AAAA,IACrB,GAEMW,IAAa,CAACL,MAAiB;;AACnC,MAAAN,EAAW,QAAQ;AACnB,YAAMY,KAAQJ,IAAAF,EAAE,iBAAF,gBAAAE,EAAgB;AAC9B,MAAII,KAASA,EAAM,CAAC,KAClBV,EAAYU,EAAM,CAAC,CAAC;AAAA,IAExB,GAGMC,IAAmB,CAACP,MAAa;AACrC,YAAMQ,IAAQR,EAAE;AAChB,MAAIQ,EAAM,SAASA,EAAM,MAAM,CAAC,MAC9BZ,EAAYY,EAAM,MAAM,CAAC,CAAC,GAC1BA,EAAM,QAAQ;AAAA,IAElB,GAGMC,IAAe,MAAM;AACzB,MAAAjB,EAAa,QAAQ,IACrBF,EAAK,qBAAqB,EAAE;AAAA,IAC9B;AAGA,WAAAoB;AAAA,MACE,MAAMtB,EAAM;AAAA,MACZ,CAACuB,MAAW;AACV,QAAAnB,EAAa,QAAQmB,KAAU;AAAA,MACjC;AAAA,IAAA;;kBArGFC,EA+BM,OAAA;AAAA,QA9BJ,OAAKC,GAAA,CAAC,uBAAqB,EAAA,UAIRnB,EAAA,MAAA,CAAU,CAAA;AAAA,QAH5B,cAAkBS,GAAc,CAAA,SAAA,CAAA;AAAA,QAChC,aAAWC;AAAA,QACX,UAAcC,GAAU,CAAA,SAAA,CAAA;AAAA,MAAA;QAEzBS,EAUM,OAVNC,IAUM;AAAA,UARIvB,EAAA,cADRoB,EAGkB,OAAA;AAAA;YADf,KAAKpB,EAAA;AAAA,YACN,KAAI;AAAA,UAAA,oBACNwB,EAAA,GAAAJ,EAIM,OAJNK,IAIM;AAAA,YADJH,EAAoC,gBAA3BI,EAAApB,CAAA,EAAE,aAAA,CAAA,GAAA,CAAA;AAAA,UAAA;;QAIfgB,EAMM,OANNK,IAMM;AAAA,UALJL,EAIoB,SAAA;AAAA,YAHlB,MAAK;AAAA,YACL,QAAO;AAAA,YACN,UAAQP;AAAA,qBACL;AAAA,YAAJ,KAAIZ;AAAA,UAAA;;QAIAH,EAAA,cAFRoB,EAKM,OAAA;AAAA;UAJJ,OAAM;AAAA,UAEL,SAAOH;AAAA,QAAA;UACRW,EAA8BC,GAAA,EAAtB,MAAK,SAAO;AAAA,QAAA;;;;;;;ACuPxB,UAAMC,IAAW7B,EAAA,GACX8B,IAAU9B,EAAA,GACV+B,IAAe/B,EAAI,EAAK,GAoCxBgC,IAAWC,EAAS;AAAA,MACxB,MAAM;AAAA,MACN,MAAM;AAAA,MACN,SAAS;AAAA,MACT,UAAU;AAAA,MACV,OAAO;AAAA,IAAA,CACR,GAEKC,IAAWlC,EAAS,EAAE,GACtBmC,IAAoB,CAACC,GAAUC,MAC/BD,EAAI,WAAW,MACV,iBAEF;AAET,aAASE,EAAYC,IAAU,IAAO;AACpC,UAAI,EAAC,MAAAC,GAAM,MAAAC,GAAM,SAAAC,GAAS,UAAAC,MAAYX;AACtC,MAAIO,MACFG,IAAU,IAEZX,EAAa,QAAQ,IACrBa,EACG,QAAQ;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM;AAAA,UACJ,MAAAJ;AAAA,UACA,MAAAC;AAAA,UACA,SAAAC;AAAA,UACA,UAAAC;AAAA,QAAA;AAAA,MACF,CACD,EACA,KAAK,CAACE,MAAa;;AAClB,cAAMC,IAAOD,EAAI,KAAK;AACtB,QAAAX,EAAS,QAAQY,EAAK,WAAW,CAAA,GACjCd,EAAS,QAAQc,EAAK,WAASrC,IAAAqC,EAAK,YAAL,gBAAArC,EAAc,WAAU;AAAA,MACzD,CAAC,EACA,MAAM,CAACsC,MAAU;AAChB,gBAAQ,MAAM,aAAaA,CAAK,GAChCC,EAAU,MAAM3C,EAAG,gBAAgB,CAAC;AAAA,MACtC,CAAC,EACA,QAAQ,MAAM;AACb,QAAA0B,EAAa,QAAQ;AAAA,MACvB,CAAC;AAAA,IACL;AAEA,IAAAd;AAAA,MACE,MAAM,CAACe,EAAS,SAASA,EAAS,QAAQ;AAAA,MAC1C,MAAM;AACJ,QAAAM,EAAA;AAAA,MACF;AAAA,IAAA;AAGF,aAASW,EAAgBb,GAAU;;AACjC,OAAA3B,IAAAoB,EAAS,UAAT,QAAApB,EAAgB,mBAAmB2B;AAAA,IACrC;AAEA,aAASc,IAAY;AACnB,MAAAlB,EAAS,OAAO,IAChBA,EAAS,OAAO,IAChBA,EAAS,UAAU,GACnBA,EAAS,QAAQ,GACjBM,EAAA;AAAA,IACF;AAEA,UAAMa,IAAgBnD,EAAA,GAChBoD,IAAWpD,EAAI,EAAK,GACpBqD,IAAiBC,EAAS,MACvBH,EAAc,SAASjB,EAAS,MAAM,SAAS,CACvD,GACKqB,IAAiBD,EAAS,MACvBH,EAAc,SAAS,CAC/B,GAEKK,IAAWvB,EAAwB;AAAA,MACvC,IAAI;AAAA,MACJ,MAAM;AAAA,MACN,MAAM;AAAA,MACN,MAAM;AAAA,MACN,QAAQ;AAAA,MACR,OAAO;AAAA,MACP,aAAa;AAAA,IAAA,CACd,GAEKwB,IAAYxB,EAAS;AAAA,MACzB,MAAM,CAAC,EAAC,UAAU,IAAM,MAAM,UAAU,SAAS5B,EAAG,OAAO,GAAE;AAAA,MAC7D,MAAM,CAAC,EAAC,UAAU,IAAM,MAAM,UAAU,SAASA,EAAG,OAAO,GAAE;AAAA,MAC7D,MAAM,CAAC,EAAC,UAAU,IAAM,MAAM,UAAU,SAASA,EAAG,OAAO,GAAE;AAAA,MAC7D,QAAQ,CAAC,EAAC,UAAU,IAAM,MAAM,UAAU,SAASA,EAAG,SAAS,GAAE;AAAA,MACjE,OAAO,CAAC,EAAC,UAAU,IAAM,MAAM,UAAU,SAASA,EAAG,WAAW,EAAA,CAAE;AAAA,IAAA,CACnE,GAGKqD,IAAeJ,EAAS;AAAA,MAC5B,KAAK,MAAME,EAAS,UAAU;AAAA,MAC9B,KAAK,CAACG,MAAiB;AACrB,QAAAH,EAAS,QAAQG,IAAM,MAAM;AAAA,MAC/B;AAAA,IAAA,CACD,GAGKC,IAAmB;AAAA,MACvB,EAAC,OAAO,WAAW,OAAO,qBAAA;AAAA,MAC1B,EAAC,OAAO,eAAe,OAAO,yBAAA;AAAA,MAC9B,EAAC,OAAO,WAAW,OAAO,kBAAA;AAAA,MAC1B,EAAC,OAAO,gBAAgB,OAAO,wBAAA;AAAA,MAC/B,EAAC,OAAO,YAAY,OAAO,kBAAA;AAAA,MAC3B,EAAC,OAAO,yBAAyB,OAAO,+BAAA;AAAA,IAA8B,GAIlEC,KAAuB,CAACC,GAAqBC,MAAqC;AACtF,YAAMC,IAAUF,IACZF,EAAiB;AAAA,QAAO,CAACK,MACvBA,EAAK,MAAM,cAAc,SAASH,EAAY,YAAA,CAAa;AAAA,MAAA,IAE7DF;AACJ,MAAAG,EAAGC,CAAO;AAAA,IACZ;AACA,aAASE,IAAa;;AACpB,OAAAzD,IAAAqB,EAAQ,UAAR,QAAArB,EAAe,eACf0C,EAAc,QAAQ,GACtBK,EAAS,KAAK,QACdJ,EAAS,QAAQ;AAAA,IACnB;AAEA,aAASe,KAAS;AAChB,MAAAX,EAAS,KAAK,QACdA,EAAS,OAAO,IAChBA,EAAS,OAAO,IAChBA,EAAS,OAAO,QAChBA,EAAS,SAAS,KAClBA,EAAS,QAAQ,IACjBA,EAAS,cAAc,IACvBJ,EAAS,QAAQ;AAAA,IACnB;AAEA,aAASgB,IAAU;AACjB,UAAI,CAACb,EAAe,OAAO;AACzB,YAAIc,IAAQlB,EAAc,QAAQ,GAC9Bc,IAAO/B,EAAS,MAAMmC,CAAK;AAC/B,QAAAC,EAAQL,GAAMI,CAAK;AAAA,MACrB;AAAA,IACF;AAEA,aAASC,EAAQL,GAAWI,GAAY;AACtC,MAAAlB,EAAc,QAAQkB,GACtBb,EAAS,KAAKS,EAAK,IACnBT,EAAS,OAAOS,EAAK,MACrBT,EAAS,OAAOS,EAAK,MACrBT,EAAS,OAAOS,EAAK,QAAQ,QAC7BT,EAAS,SAASS,EAAK,QACvBT,EAAS,QAAQS,EAAK,OACtBT,EAAS,cAAcS,EAAK,aAC5Bb,EAAS,QAAQ;AAAA,IACnB;AAEA,aAASmB,IAAU;AACjB,UAAI,CAAClB,EAAe,OAAO;AACzB,YAAIgB,IAAQlB,EAAc,QAAQ,GAC9Bc,IAAO/B,EAAS,MAAMmC,CAAK;AAC/B,QAAAC,EAAQL,GAAMI,CAAK;AAAA,MACrB;AAAA,IACF;AAEA,aAASG,IAAU;;AACjB,UAAIC,IAAQ,CAACjB,EAAS,IAClBkB,IAAM;AACV,OAAAjE,IAAAqB,EAAQ,UAAR,QAAArB,EAAe,WAAW,KAAK,CAACkE,MAAgB;AAC9C,YAAI,CAACA,GAAQ;AACX,cAAI7B,IAAY;AAAA,YACd,GAAGU;AAAA,UAAA;AAEL,UAAIiB,MACF3B,EAAK,KAAK,SAEZF,EACG,QAAQ;AAAA,YACP,KAAA8B;AAAA,YACA,QAAQ;AAAA,YACR,MAAM;AAAA,YACN,MAAA5B;AAAA,UAAA,CACD,EACA,KAAK,CAACD,MAAQ;AACb,kBAAMC,IAAOD,EAAI;AACjB,YAAIC,EAAK,WAAW,OAClBE,EAAU,QAAQF,EAAK,GAAG,GACrB2B,IAMHP,EAAA,KALAhC,EAAS,MAAMiB,EAAc,KAAK,IAAI;AAAA,cACpC,GAAGK;AAAA,YAAA,GAELe,EAAA,MAKFvB,EAAU,MAAMF,EAAK,GAAG;AAAA,UAE5B,CAAC,EACA,MAAM,CAACC,MAAU;AAChB,oBAAQ,MAAM,WAAWA,CAAK,GAC9BC,EAAU,MAAM3C,EAAG,YAAY,CAAC;AAAA,UAClC,CAAC;AAAA,QACL;AAAA,MACF;AAAA,IACF;AAEA,aAASuE,EAAmBC,GAAYR,GAAeS,GAAmB;AACxElC,MAAAA,EACG,QAAQ;AAAA,QACP,KAAK;AAAA,QACL,QAAQ;AAAA,QACR,MAAM;AAAA,QACN,MAAM,EAAC,IAAAiC,GAAI,QAAAC,EAAA;AAAA,MAAM,CAClB,EACA,KAAK,CAACjC,MAAQ;AACb,cAAMC,IAAOD,EAAI;AACjB,YAAIC,EAAK,WAAW,KAAK;AACvB,gBAAMiC,IAAUD,MAAW,MAAMzE,EAAG,MAAM,IAAIA,EAAG,MAAM;AACvD,UAAA2C,EAAU,QAAQ+B,CAAO,GACzB7C,EAAS,MAAMmC,CAAK,EAAE,SAASS;AAAA,QACjC;AACE,UAAA9B,EAAU,MAAMF,EAAK,GAAG;AAAA,MAE5B,CAAC,EACA,MAAM,CAACC,MAAU;AAChB,gBAAQ,MAAM,WAAWA,CAAK,GAC9BC,EAAU,MAAM3C,EAAG,YAAY,CAAC;AAAA,MAClC,CAAC;AAAA,IACL;AAGA,UAAM2E,IAAgB,CAACzE,MAAqB;AAC1C,YAAM,EAAC,KAAA0E,GAAK,SAAAC,GAAS,QAAAC,EAAA,IAAU5E;AAC/B,MAAI6C,EAAS,UACP6B,MAAQ,OAAOC,MACjB3E,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFiE,EAAA,IAEES,MAAQ,gBAAgBE,MAC1B5E,EAAE,eAAA,GACFA,EAAE,gBAAA,GACFgE,EAAA,IAEEU,MAAQ,eAAeE,MACzB5E,EAAE,eAAA,GACFA,EAAE,gBAAA,GACF6D,EAAA;AAAA,IAGN;AAEA,WAAAgB,GAAU,MAAM;AACd,MAAA9C,EAAA,GACA,OAAO,iBAAiB,WAAW0C,CAAa;AAAA,IAClD,CAAC,GAEDK,GAAY,MAAM;AAChB,aAAO,oBAAoB,WAAWL,CAAa;AAAA,IACrD,CAAC;;;QA/jBD3D,EAkIM,OAlINC,IAkIM;AAAA,UAjIJD,EA+BM,OA/BNiE,IA+BM;AAAA,YA9BJjE,EAuBM,OAvBNG,IAuBM;AAAA,cAtBJG,EAqBU4D,GAAA,EArBD,QAAA,MAAM;AAAA,2BACb,MAKe;AAAA,kBALf5D,EAKe6D,GAAA;AAAA,oBALA,OAAO/D,EAAApB,CAAA,EAAE,IAAA;AAAA,kBAAA;+BACtB,MAG0C;AAAA,sBAH1CsB,EAG0C8D,GAAA;AAAA,wBAF/B,YAAAzD,EAAS;AAAA,wBAAT,uBAAA0D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA3D,EAAS,OAAI2D;AAAA,wBACrB,qCAA0BrD,EAAW,EAAA,GAAA,CAAA,QAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,wBACrC,aAAab,EAAApB,CAAA,EAAE,SAAA;AAAA,sBAAA;;;;kBAEpBsB,EAKe6D,GAAA;AAAA,oBALA,OAAO/D,EAAApB,CAAA,EAAE,IAAA;AAAA,kBAAA;+BACtB,MAG0C;AAAA,sBAH1CsB,EAG0C8D,GAAA;AAAA,wBAF/B,YAAAzD,EAAS;AAAA,wBAAT,uBAAA0D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA3D,EAAS,OAAI2D;AAAA,wBACrB,qCAA0BrD,EAAW,EAAA,GAAA,CAAA,QAAA,SAAA,CAAA,GAAA,CAAA,OAAA,CAAA;AAAA,wBACrC,aAAab,EAAApB,CAAA,EAAE,SAAA;AAAA,sBAAA;;;;kBAEpBsB,EAOe6D,GAAA,MAAA;AAAA,+BANb,MAAwD;AAAA,sBAAxD7D,EAAwDiE,GAAA,EAA5C,SAAO1C,KAAS;AAAA,mCAAE,MAAc;AAAA,8BAAXzB,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,wBAAA;;;sBACnCsB,EAIYiE,GAAA;AAAA,wBAHV,MAAK;AAAA,wBACJ,SAAOtD;AAAA,sBAAA;mCACR,MAAc;AAAA,8BAAXb,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,wBAAA;;;;;;;;;;YAKbsB,EAKYiE,GAAA;AAAA,cAJV,MAAK;AAAA,cACJ,SAAOzB;AAAA,YAAA;yBACR,MAAiC;AAAA,kCAAjC9C,EAAiC,KAAA,EAA9B,OAAM,oBAAA,GAAmB,MAAA,EAAA;AAAA,gBAAKwE,EAAA,QAC9BpE,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;mBAGTyF,EAyFWC,IAAA;AAAA,qBAxFL;AAAA,YAAJ,KAAIlE;AAAA,YAEH,MAAMK,EAAA;AAAA,YACP,WAAQ;AAAA,YACP,kBAAgBC;AAAA,YAChB,YAAWc;AAAA,UAAA;uBACZ,MAGmC;AAAA,cAHnCtB,EAGmCqE,GAAA;AAAA,gBAFjC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,OAAM;AAAA,cAAA;cACRrE,EAImCqE,GAAA;AAAA,gBAHjC,MAAK;AAAA,gBACL,OAAM;AAAA,gBACN,OAAM;AAAA,gBACN,OAAM;AAAA,cAAA;cACRrE,EAI0CqE,GAAA;AAAA,gBAHvC,OAAOvE,EAAApB,CAAA,EAAE,IAAA;AAAA,gBACV,MAAK;AAAA,gBACL,aAAU;AAAA,gBACV,yBAAA;AAAA,cAAA;cACFsB,EAI0CqE,GAAA;AAAA,gBAHvC,OAAOvE,EAAApB,CAAA,EAAE,IAAA;AAAA,gBACV,MAAK;AAAA,gBACL,aAAU;AAAA,gBACV,yBAAA;AAAA,cAAA;cACFsB,EAuBkBqE,GAAA;AAAA,gBAtBf,OAAOvE,EAAApB,CAAA,EAAE,GAAA;AAAA,gBACV,aAAU;AAAA,cAAA;2BAER,CAKoC,EAAA,KAAA,EANb,MAAA4F,GAAM,OAAAC,EAAA,QAAK;AAAA,kBAG1BD,MAAS,gBAFjBH,EAKoCK,GAAA;AAAA;oBAJlC,sBAAA;AAAA,oBAEC,KAAKD;AAAA,oBACL,qBAAmBA,CAAK;AAAA,oBACzB,OAAM;AAAA,kBAAA,4CAGKD,MAAS,gBAFtB9E,EAKM,OAAA;AAAA;oBAJJ,OAAM;AAAA,oBAEL,6BAAyB+E,GAAK;AAAA,kBAAA,KAC5BA,CAAK,GAAA,CAAA,KAGGD,MAAS,kBADtBH,EAISM,IAAA;AAAA;oBAFN,MAAMF,MAAK,MAAA,YAAA;AAAA,kBAAA;+BACZ,MAAuC;AAAA,0BAApCA,MAAK,MAAWzE,EAAApB,CAAA,EAAE,GAAA,IAAQoB,EAAApB,CAAA,EAAE,GAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;8CAEjCc,EAAqEkF,IAAA,EAAA,KAAA,KAAA;AAAA,wBAAnBH,CAAK,GAAA,CAAA;AAAA,kBAAA;;;;cAG3DvE,EAMkBqE,GAAA;AAAA,gBALf,OAAOvE,EAAApB,CAAA,EAAE,MAAA;AAAA,gBACV,OAAM;AAAA,cAAA;gBAEJ,SAAAiG,EAAA,CAA8C,EAD7B,KAAAlE,QAAG;AAAA,kBACjByD,EAAAU,EAAAnE,EAAI,WAAM,MAAWX,EAAApB,CAAA,UAAWoB,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cAGzCsB,EAI0CqE,GAAA;AAAA,gBAHvC,OAAOvE,EAAApB,CAAA,EAAE,IAAA;AAAA,gBACV,MAAK;AAAA,gBACL,aAAU;AAAA,gBACV,yBAAA;AAAA,cAAA;cACFsB,EA0BkBqE,GAAA;AAAA,gBAzBf,OAAOvE,EAAApB,CAAA,EAAE,IAAA;AAAA,gBACV,OAAM;AAAA,gBACN,OAAM;AAAA,cAAA;gBACK,SAAOiG,EAChB,CAKY,EANO,KAAAlE,GAAK,QAAAoE,QAAM;AAAA,kBAC9B7E,EAKYiE,GAAA;AAAA,oBAJV,MAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,SAAKa,EAAA,CAAAd,OAAOrB,EAAQlC,GAAKoE,CAAM,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAChC,MAAc;AAAA,0BAAX/E,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;kBAGC+B,EAAI,WAAM,YADlB0D,EAMYF,GAAA;AAAA;oBAJV,MAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,mBAAYhB,EAAmBxC,EAAI,IAAIoE,GAAM,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAC9C,MAAc;AAAA,0BAAX/E,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;8CAEPyF,EAMYF,GAAA;AAAA;oBAJV,MAAA;AAAA,oBACA,MAAK;AAAA,oBACJ,mBAAYhB,EAAmBxC,EAAI,IAAIoE,GAAM,GAAA,GAAA,CAAA,MAAA,CAAA;AAAA,kBAAA;+BAC9C,MAAc;AAAA,0BAAX/E,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,oBAAA;;;;;;;;;iBAnFA0B,EAAA,KAAY;AAAA,UAAA;UAwFzBJ,EAMuD+E,IAAA;AAAA,YALrD,YAAA;AAAA,YACC,cAAY,CAAA,IAAA,IAAA,KAAA,KAAA,GAAA;AAAA,YACL,aAAW1E,EAAS;AAAA,YAAT,qBAAA0D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA3D,EAAS,WAAQ2D;AAAA,YACnC,OAAO3D,EAAS;AAAA,YACT,gBAAcA,EAAS;AAAA,YAAT,wBAAA0D,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAA3D,EAAS,UAAO2D;AAAA,YACtC,QAAO;AAAA,UAAA;;QAEXhE,EAwIYgF,IAAA;AAAA,UAvIV,OAAM;AAAA,sBACGvD,EAAA;AAAA,0DAAAA,EAAQ,QAAAuC;AAAA,UAChB,SAAOzB;AAAA,UACR,WAAA;AAAA,UACC,OAAOV,EAAS,KAAK/B,EAAApB,CAAA,YAAaoB,EAAApB,CAAA,EAAE,MAAA;AAAA,QAAA;UAwG1B,UACT,MAwBM;AAAA,YAxBNgB,EAwBM,OAxBNK,IAwBM;AAAA,cAvBJC,EAKYiE,GAAA;AAAA,gBAJT,SAAOxB;AAAA,gBACR,MAAA;AAAA,gBACC,UAAUb,EAAA;AAAA,cAAA;2BACX,MAAe;AAAA,kBAAZsC,EAAAU,EAAA9E,EAAApB,CAAA,YAAY,cACjB,CAAA;AAAA,gBAAA;;;cACAsB,EAKYiE,GAAA;AAAA,gBAJV,MAAK;AAAA,gBACL,OAAA;AAAA,gBACC,SAAO1B;AAAA,cAAA;2BACR,MAAc;AAAA,sBAAXzC,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cAEPsB,EAIYiE,GAAA;AAAA,gBAHV,MAAK;AAAA,gBACJ,SAAOpB;AAAA,cAAA;2BACR,MAAc;AAAA,kBAAXqB,EAAAU,EAAA9E,EAAApB,CAAA,WAAW,eAChB,CAAA;AAAA,gBAAA;;;cACAsB,EAKYiE,GAAA;AAAA,gBAJT,SAAOrB;AAAA,gBACR,MAAA;AAAA,gBACC,UAAUlB,EAAA;AAAA,cAAA;2BACX,MAAe;AAAA,kBAAZwC,EAAAU,EAAA9E,EAAApB,CAAA,YAAY,cACjB,CAAA;AAAA,gBAAA;;;;;qBA/HJ,MAsGU;AAAA,YAtGVsB,EAsGU4D,GAAA;AAAA,cArGR,kBAAe;AAAA,uBACX;AAAA,cAAJ,KAAIzD;AAAA,cACH,OAAO0B;AAAA,cACP,OAAOC;AAAA,YAAA;yBACR,MAgGS;AAAA,gBAhGT9B,EAgGSiF,IAAA,EAhGD,QAAO,QAAI;AAAA,6BACjB,MAQS;AAAA,oBARTjF,EAQSkF,GAAA,EARA,MAAM,MAAE;AAAA,iCACf,MAMe;AAAA,wBANflF,EAMe6D,GAAA;AAAA,0BALZ,OAAO/D,EAAApB,CAAA,EAAE,IAAA;AAAA,0BACV,MAAK;AAAA,wBAAA;qCACL,MAEuB;AAAA,4BAFvBsB,EAEuB8D,GAAA;AAAA,8BADZ,YAAAjC,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAnC,EAAS,OAAImC;AAAA,8BACtB,WAAA;AAAA,4BAAA;;;;;;;oBAGNhE,EAWSkF,GAAA,EAXA,MAAM,MAAE;AAAA,iCACf,MASe;AAAA,wBATflF,EASe6D,GAAA;AAAA,0BARZ,OAAO/D,EAAApB,CAAA,EAAE,IAAA;AAAA,0BACV,MAAK;AAAA,wBAAA;qCACL,MAKwB;AAAA,4BALxBsB,EAKwBmF,IAAA;AAAA,8BAJb,YAAAtD,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAnC,EAAS,OAAImC;AAAA,8BACrB,qBAAmB9B;AAAA,8BACnB,aAAapC,EAAApB,CAAA,EAAE,YAAA;AAAA,8BAChB,WAAA;AAAA,8BACA,OAAA,EAAA,OAAA,OAAA;AAAA,4BAAA;;;;;;;oBAGNsB,EAeSkF,GAAA,EAfA,MAAM,MAAE;AAAA,iCACf,MAae;AAAA,wBAbflF,EAae6D,GAAA;AAAA,0BAZZ,OAAO/D,EAAApB,CAAA,EAAE,KAAA;AAAA,0BACV,MAAK;AAAA,wBAAA;qCACL,MASiB;AAAA,4BATjBsB,EASiBoF,IAAA;AAAA,8BARN,YAAAvD,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAAnC,EAAS,OAAImC;AAAA,8BACrB,UAAMD,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAC,MAAEnC,EAAS,QAAK;AAAA,4BAAA;yCACvB,MAA+D;AAAA,gCAA/D7B,EAA+DqF,GAAA;AAAA,kCAApD,OAAO;AAAA;AAAA,gCAAA;6CAAoB,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCAC3CsB,EAAiEqF,GAAA;AAAA,kCAAtD,OAAO;AAAA;AAAA,gCAAA;6CAAsB,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCAC7CsB,EAAgEqF,GAAA;AAAA,kCAArD,OAAO;AAAA;AAAA,gCAAA;6CAAqB,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCAC5CsB,EAAgEqF,GAAA;AAAA,kCAArD,OAAO;AAAA;AAAA,gCAAA;6CAAqB,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCAC5CsB,EAAqEqF,GAAA;AAAA,kCAA1D,OAAO;AAAA;AAAA,gCAAA;6CAAwB,MAAgB;AAAA,wCAAbvF,EAAApB,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCAC/CsB,EAAmEqF,GAAA;AAAA,kCAAxD,OAAO;AAAA;AAAA,gCAAA;6CAAuB,MAAe;AAAA,wCAAZvF,EAAApB,CAAA,EAAE,KAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;;;;;;;oBAIpDsB,EASSkF,GAAA;AAAA,sBARN,MAAM;AAAA,sBACP,MAAK;AAAA,oBAAA;iCACL,MAKe;AAAA,wBALflF,EAKe6D,GAAA;AAAA,0BALA,OAAO/D,EAAApB,CAAA,EAAE,MAAA;AAAA,wBAAA;qCACtB,MAGiB;AAAA,4BAHjBsB,EAGiBoF,IAAA;AAAA,8BAHQ,YAAAvD,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,SAAMmC;AAAA,4BAAA;yCACtC,MAA6C;AAAA,gCAA7ChE,EAA6CqF,GAAA,EAAnC,OAAM,OAAG;AAAA,6CAAC,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;gCACzBsB,EAA6CqF,GAAA,EAAnC,OAAM,OAAG;AAAA,6CAAC,MAAc;AAAA,wCAAXvF,EAAApB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kCAAA;;;;;;;;;;;;oBAI/BsB,EAqCSkF,GAAA,EArCA,MAAM,MAAE;AAAA,iCACf,MAmCe;AAAA,wBAnCflF,EAmCe6D,GAAA;AAAA,0BAlCZ,OAAO/D,EAAApB,CAAA,EAAE,GAAA;AAAA,0BACV,MAAK;AAAA,wBAAA;qCACL,MAGuB;AAAA,4BADfmD,EAAS,SAAS,eAF1BsC,EAGuBL,GAAA;AAAA;8BAFZ,YAAAjC,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,8BAEvB,WAAA;AAAA,4BAAA,+BAGWnC,EAAS,SAAS,iBAF/BsC,EAEuEmB,IAAA;AAAA;8BAD5D,YAAAzD,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,4BAAA,+BAIZnC,EAAS,SAAS,gBAF/BsC,EAE0EoB,IAAA;AAAA;8BAD/D,YAAA1D,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,4BAAA,+BAGZnC,EAAS,SAAS,gBAD/BsC,EASWL,GAAA;AAAA;8BAPA,YAAAjC,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,8BACvB,WAAA;AAAA,4BAAA;8BACW,UACT,MAE6C;AAAA,gCAF7ChE,EAE6CwF,IAAA;AAAA,kCAD3C,gBAAa;AAAA,kCACJ,YAAA3D,EAAS;AAAA,kCAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,gCAAA;;;qDAIhBnC,EAAS,SAAS,mBAD/BsC,EAI+CsB,IAAA;AAAA;8BAFpC,YAAA5D,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,QAAKmC;AAAA,8BACvB,MAAK;AAAA,8BACJ,aAAalE,EAAApB,CAAA,EAAE,QAAA;AAAA,4BAAA,8CAELmD,EAAS,SAAS,kBAD/BsC,EAM4BuB,IAAA;AAAA;0CAJjB3D,EAAA;AAAA,8EAAAA,EAAY,QAAAiC;AAAA,8BACpB,eAAalE,EAAApB,CAAA,EAAE,IAAA;AAAA,8BACf,iBAAeoB,EAAApB,CAAA,EAAE,IAAA;AAAA,8BACjB,gBAAc;AAAA,8BACd,kBAAgB;AAAA,4BAAA;;;;;;;oBAGvBsB,EASSkF,GAAA,EATA,MAAM,MAAE;AAAA,iCACf,MAOe;AAAA,wBAPflF,EAOe6D,GAAA;AAAA,0BANZ,OAAO/D,EAAApB,CAAA,EAAE,IAAA;AAAA,0BACV,MAAK;AAAA,wBAAA;qCACL,MAGuB;AAAA,4BAHvBsB,EAGuB8D,GAAA;AAAA,8BAFrB,MAAK;AAAA,8BACI,YAAAjC,EAAS;AAAA,8BAAT,uBAAAkC,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA,CAAAC,MAAAnC,EAAS,cAAWmC;AAAA,8BAC7B,WAAA;AAAA,4BAAA;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"SysConfig-BBvexnOf.js","sources":["../components/common/basic/ImageBase64Choose.vue","../components/business/admin/config/SysConfig.vue"],"sourcesContent":["<template>\n <div\n class=\"image-base64-choose\"\n @dragover.prevent=\"handleDragOver\"\n @dragleave=\"handleDragLeave\"\n @drop.prevent=\"handleDrop\"\n :class=\"{dragover: isDragging}\">\n <div class=\"preview-area\">\n <img\n v-if=\"previewImage\"\n :src=\"previewImage\"\n alt=\"Preview\" />\n <div\n v-else\n class=\"upload-prompt\">\n <span>{{ ct('点击或拖拽图片到此区域') }}</span>\n </div>\n </div>\n\n <div class=\"overlay-layer\">\n <input\n type=\"file\"\n accept=\"image/*\"\n @change=\"handleFileSelect\"\n ref=\"fileInput\" />\n </div>\n <div\n class=\"delete-btn\"\n v-if=\"previewImage\"\n @click=\"handleDelete\">\n <YhIcon name=\"close\"></YhIcon>\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {ref, watch} from 'vue';\n import {ct} from '../../../utils/i18nHelp';\n\n const props = defineProps({\n modelValue: String,\n });\n\n const emit = defineEmits(['update:modelValue']);\n\n const previewImage = ref(props.modelValue || '');\n const isDragging = ref(false);\n const fileInput = ref<HTMLInputElement | null>(null);\n\n // 处理文件选择通用方法\n const processFile = (file: File) => {\n if (!file.type.startsWith('image/')) {\n alert(ct('请选择图片文件'));\n return;\n }\n\n const reader = new FileReader();\n reader.onload = (e) => {\n const base64 = e.target?.result as string;\n previewImage.value = base64;\n emit('update:modelValue', base64);\n };\n reader.readAsDataURL(file);\n };\n\n // 拖拽处理\n const handleDragOver = () => {\n isDragging.value = true;\n };\n\n const handleDragLeave = () => {\n isDragging.value = false;\n };\n\n const handleDrop = (e: DragEvent) => {\n isDragging.value = false;\n const files = e.dataTransfer?.files;\n if (files && files[0]) {\n processFile(files[0]);\n }\n };\n\n // 文件选择处理\n const handleFileSelect = (e: Event) => {\n const input = e.target as HTMLInputElement;\n if (input.files && input.files[0]) {\n processFile(input.files[0]);\n input.value = ''; // 清除选择以便重复选择相同文件\n }\n };\n\n // 删除处理\n const handleDelete = () => {\n previewImage.value = '';\n emit('update:modelValue', '');\n };\n\n // 监听外部modelValue变化\n watch(\n () => props.modelValue,\n (newVal) => {\n previewImage.value = newVal || '';\n }\n );\n</script>\n\n<style lang=\"scss\" scoped>\n .image-base64-choose {\n position: relative;\n width: 300px;\n height: 200px;\n border: 2px dashed #ccc;\n border-radius: 8px;\n overflow: hidden;\n transition: border-color 0.3s;\n\n &.dragover {\n border-color: #409eff;\n opacity: 0.5;\n }\n\n .preview-area {\n width: 100%;\n height: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n\n img {\n max-width: 100%;\n max-height: 100%;\n object-fit: contain;\n }\n\n .upload-prompt {\n text-align: center;\n color: #999;\n font-size: 14px;\n }\n }\n\n .overlay-layer {\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n height: 100%;\n cursor: pointer;\n\n input[type='file'] {\n width: 100%;\n height: 100%;\n opacity: 0;\n cursor: pointer;\n }\n }\n\n .delete-btn {\n position: absolute;\n top: 0;\n right: 0;\n display: block;\n width: 20px;\n height: 30px;\n text-align: center;\n line-height: 30px;\n cursor: pointer;\n background: rgba(0, 0, 0, 0.5);\n color: white;\n z-index: 2;\n\n &:hover {\n background: rgba(0, 0, 0, 0.7);\n }\n }\n }\n</style>\n","<template>\n <div class=\"sys-config-list-container\">\n <div class=\"sys-config-list-actions\">\n <div class=\"sys-config-list-conditions\">\n <el-form inline>\n <el-form-item :label=\"ct('名称')\">\n <el-input\n v-model=\"listForm.name\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选名称')\"></el-input>\n </el-form-item>\n <el-form-item :label=\"ct('编码')\">\n <el-input\n v-model=\"listForm.code\"\n @keyup.enter.stop.prevent=\"getDataList(true)\"\n :placeholder=\"ct('键入以筛选编码')\"></el-input>\n </el-form-item>\n <el-form-item>\n <el-button @click=\"resetList\">{{ ct('重置') }}</el-button>\n <el-button\n type=\"primary\"\n @click=\"getDataList\">\n {{ ct('搜索') }}\n </el-button>\n </el-form-item>\n </el-form>\n </div>\n <el-button\n type=\"primary\"\n @click=\"addOne\">\n <i class=\"iconfont icon-add\"></i>\n {{ ct('新增') }}\n </el-button>\n </div>\n <el-table\n ref=\"tableRef\"\n v-loading=\"tableLoading\"\n :data=\"dataList\"\n row-key=\"code\"\n :row-class-name=\"tableRowClassName\"\n @row-click=\"rowClickHandler\">\n <el-table-column\n type=\"selection\"\n width=\"50\"\n align=\"center\"></el-table-column>\n <el-table-column\n type=\"index\"\n label=\"#\"\n width=\"60\"\n align=\"center\"></el-table-column>\n <el-table-column\n :label=\"ct('名称')\"\n prop=\"name\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('编码')\"\n prop=\"code\"\n min-width=\"80\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('值')\"\n min-width=\"150\">\n <template v-slot=\"{row: {type, value}}\">\n <el-image\n preview-teleported\n v-if=\"type === SysConfigType.IMAGE\"\n :src=\"value\"\n :preview-src-list=\"[value]\"\n class=\"table-el-image\"></el-image>\n <div\n class=\"table-color-block\"\n v-else-if=\"type === SysConfigType.COLOR\"\n :style=\"{backgroundColor: value}\">\n {{ value }}\n </div>\n <el-tag\n v-else-if=\"type === SysConfigType.BOOLEAN\"\n :type=\"value === 'Y' ? 'success' : 'info'\">\n {{ value === 'Y' ? ct('是') : ct('否') }}\n </el-tag>\n <template v-else=\"type === SysConfigType.TEXT\">{{ value }}</template>\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('是否可用')\"\n width=\"80\">\n <template v-slot=\"{row}\">\n {{ row.active === 'Y' ? ct('启用') : ct('禁用') }}\n </template>\n </el-table-column>\n <el-table-column\n :label=\"ct('说明')\"\n prop=\"description\"\n min-width=\"100\"\n show-overflow-tooltip></el-table-column>\n <el-table-column\n :label=\"ct('操作')\"\n width=\"220\"\n align=\"center\">\n <template #default=\"{row, $index}\">\n <el-button\n link\n type=\"primary\"\n @click.stop=\"editOne(row, $index)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n v-if=\"row.active === 'N'\"\n link\n type=\"success\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'Y')\">\n {{ ct('启用') }}\n </el-button>\n <el-button\n v-else\n link\n type=\"danger\"\n @click.stop=\"updateActiveStatus(row.id, $index, 'N')\">\n {{ ct('禁用') }}\n </el-button>\n </template>\n </el-table-column>\n </el-table>\n <el-pagination\n background\n :page-sizes=\"[10, 50, 100, 200, 500]\"\n v-model:page-size=\"listForm.pageSize\"\n :total=\"listForm.total\"\n v-model:current-page=\"listForm.pageNum\"\n layout=\"sizes,prev,pager,next,total\"></el-pagination>\n </div>\n <el-dialog\n class=\"form-drawer\"\n v-model=\"formShow\"\n @close=\"cancelForm\"\n draggable\n :title=\"formData.id ? ct('编辑配置') : ct('新增配置')\">\n <el-form\n label-position=\"top\"\n ref=\"formRef\"\n :model=\"formData\"\n :rules=\"formRules\">\n <el-row gutter=\"10\">\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('名称')\"\n prop=\"name\">\n <el-input\n v-model=\"formData.name\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item\n :label=\"ct('编码')\"\n prop=\"code\">\n <el-autocomplete\n v-model=\"formData.code\"\n :fetch-suggestions=\"queryCodeSuggestions\"\n :placeholder=\"ct('请输入或选择配置编码')\"\n clearable\n style=\"width: 100%\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"16\">\n <el-form-item\n :label=\"ct('值类型')\"\n prop=\"type\">\n <el-radio-group\n v-model=\"formData.type\"\n @change=\"formData.value = ''\">\n <el-radio :label=\"SysConfigType.TEXT\">{{ ct('文字') }}</el-radio>\n <el-radio :label=\"SysConfigType.NUMBER\">{{ ct('数字') }}</el-radio>\n <el-radio :label=\"SysConfigType.IMAGE\">{{ ct('图片') }}</el-radio>\n <el-radio :label=\"SysConfigType.COLOR\">{{ ct('颜色') }}</el-radio>\n <el-radio :label=\"SysConfigType.DATETIME\">{{ ct('日期时间') }}</el-radio>\n <el-radio :label=\"SysConfigType.BOOLEAN\">{{ ct('布尔值') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col\n :span=\"8\"\n prop=\"active\">\n <el-form-item :label=\"ct('是否可用')\">\n <el-radio-group v-model=\"formData.active\">\n <el-radio label=\"Y\">{{ ct('启用') }}</el-radio>\n <el-radio label=\"N\">{{ ct('禁用') }}</el-radio>\n </el-radio-group>\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('值')\"\n prop=\"value\">\n <el-input\n v-model=\"formData.value\"\n v-if=\"formData.type === SysConfigType.TEXT\"\n clearable></el-input>\n <el-input-number\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.NUMBER\"></el-input-number>\n <image-base64-choose\n v-model=\"formData.value\"\n v-else-if=\"formData.type === SysConfigType.IMAGE\"></image-base64-choose>\n <el-input\n v-else-if=\"formData.type === SysConfigType.COLOR\"\n v-model=\"formData.value\"\n clearable>\n <template #prefix>\n <el-color-picker\n color-format=\"hex\"\n v-model=\"formData.value\"></el-color-picker>\n </template>\n </el-input>\n <el-date-picker\n v-else-if=\"formData.type === SysConfigType.DATETIME\"\n v-model=\"formData.value\"\n type=\"datetime\"\n :placeholder=\"ct('选择日期时间')\"></el-date-picker>\n <el-switch\n v-else-if=\"formData.type === SysConfigType.BOOLEAN\"\n v-model=\"booleanValue\"\n :active-text=\"ct('启用')\"\n :inactive-text=\"ct('禁用')\"\n :active-value=\"true\"\n :inactive-value=\"false\" />\n </el-form-item>\n </el-col>\n <el-col :span=\"24\">\n <el-form-item\n :label=\"ct('说明')\"\n prop=\"description\">\n <el-input\n type=\"textarea\"\n v-model=\"formData.description\"\n clearable></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <div class=\"sys-config-form-actions\">\n <el-button\n @click=\"prevOne\"\n text\n :disabled=\"cannotPrevItem\">\n {{ ct('上一个') }}(Alt + ←)\n </el-button>\n <el-button\n type=\"primary\"\n plain\n @click=\"cancelForm\">\n {{ ct('取消') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"saveOne\">\n {{ ct('保存') }}(Ctrl + S)\n </el-button>\n <el-button\n @click=\"nextOne\"\n text\n :disabled=\"cannotNextItem\">\n {{ ct('下一个') }}(ALT + →)\n </el-button>\n </div>\n </template>\n </el-dialog>\n</template>\n<script setup lang=\"ts\">\n import {reactive, ref, onMounted, onUnmounted, watch, computed} from 'vue';\n import {ElMessage} from 'element-plus';\n import ImageBase64Choose from '../../../common/basic/ImageBase64Choose.vue';\n import {httpRequest as http} from 'yh-client';\n import {ct} from '../../../../utils/i18nHelp';\n\n const tableRef = ref();\n const formRef = ref();\n const tableLoading = ref(false);\n\n enum SysConfigType {\n TEXT = 'TEXT',\n NUMBER = 'NUMBER',\n IMAGE = 'IMAGE',\n COLOR = 'COLOR',\n DATETIME = 'DATETIME',\n BOOLEAN = 'BOOLEAN',\n }\n\n interface SysConfig {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n interface PageResponse {\n records: SysConfig[];\n total: number;\n }\n\n interface SysConfigForm {\n id?: number;\n code: string;\n name: string;\n type: SysConfigType;\n active: 'Y' | 'N';\n value: string;\n description: string;\n }\n\n const listForm = reactive({\n name: '',\n code: '',\n pageNum: 1,\n pageSize: 10,\n total: 0,\n });\n\n const dataList = ref<any>([]);\n const tableRowClassName = (row: any, rowIndex: any) => {\n if (row.active === 'N') {\n return 'disabled-row';\n }\n return '';\n };\n function getDataList(isReset = false) {\n let {name, code, pageNum, pageSize} = listForm;\n if (isReset) {\n pageNum = 1;\n }\n tableLoading.value = true;\n http\n .request({\n url: '/parameter/list',\n method: 'POST',\n type: 'json',\n data: {\n name,\n code,\n pageNum,\n pageSize,\n },\n })\n .then((res: any) => {\n const data = res.data.data as PageResponse;\n dataList.value = data.records || [];\n listForm.total = data.total ?? data.records?.length ?? 0;\n })\n .catch((error) => {\n console.error('获取配置列表失败:', error);\n ElMessage.error(ct('获取配置列表失败,请稍后重试'));\n })\n .finally(() => {\n tableLoading.value = false;\n });\n }\n\n watch(\n () => [listForm.pageNum, listForm.pageSize],\n () => {\n getDataList();\n }\n );\n\n function rowClickHandler(row: any) {\n tableRef.value?.toggleRowSelection(row);\n }\n\n function resetList() {\n listForm.code = '';\n listForm.name = '';\n listForm.pageNum = 1;\n listForm.total = 0;\n getDataList();\n }\n\n const formDataIndex = ref();\n const formShow = ref(false);\n const cannotNextItem = computed(() => {\n return formDataIndex.value >= dataList.value.length - 1;\n });\n const cannotPrevItem = computed(() => {\n return formDataIndex.value <= 0;\n });\n\n const formData = reactive<SysConfigForm>({\n id: undefined,\n code: '',\n name: '',\n type: SysConfigType.TEXT,\n active: 'Y',\n value: '',\n description: '',\n });\n\n const formRules = reactive({\n code: [{required: true, type: 'string', message: ct('请输入编码')}],\n name: [{required: true, type: 'string', message: ct('请输入名称')}],\n type: [{required: true, type: 'string', message: ct('请选择类型')}],\n active: [{required: true, type: 'string', message: ct('请选择是否可用')}],\n value: [{required: true, type: 'string', message: ct('请输入参数配置内容')}],\n });\n\n // 布尔值计算属性(用于前端显示 true/false,后端存储 Y/N)\n const booleanValue = computed({\n get: () => formData.value === 'Y',\n set: (val: boolean) => {\n formData.value = val ? 'Y' : 'N';\n }\n });\n\n // 固定建议列表\n const CODE_SUGGESTIONS = [\n {value: 'logoUrl', label: 'logoUrl - Logo图片路径'},\n {value: 'miniLogoUrl', label: 'miniLogoUrl - 迷你Logo路径'},\n {value: 'loginBg', label: 'loginBg - 登录背景图'},\n {value: 'moduleFilter', label: 'moduleFilter - 模块筛选开关'},\n {value: 'homePath', label: 'homePath - 首页路径'},\n {value: 'ADMIN_MENU_CONFIG_KEY', label: 'ADMIN_MENU_CONFIG_KEY - 菜单配置'},\n ];\n\n // 查询编码建议\n const queryCodeSuggestions = (queryString: string, cb: (suggestions: any[]) => void) => {\n const results = queryString\n ? CODE_SUGGESTIONS.filter((item) =>\n item.value.toLowerCase().includes(queryString.toLowerCase())\n )\n : CODE_SUGGESTIONS;\n cb(results);\n };\n function cancelForm() {\n formRef.value?.resetFields();\n formDataIndex.value = 0;\n formData.id = undefined;\n formShow.value = false;\n }\n\n function addOne() {\n formData.id = undefined;\n formData.code = '';\n formData.name = '';\n formData.type = SysConfigType.TEXT;\n formData.active = 'Y';\n formData.value = '';\n formData.description = '';\n formShow.value = true;\n }\n\n function prevOne() {\n if (!cannotPrevItem.value) {\n let index = formDataIndex.value - 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function editOne(item: any, index: any) {\n formDataIndex.value = index;\n formData.id = item.id;\n formData.code = item.code;\n formData.name = item.name;\n formData.type = item.type || SysConfigType.TEXT;\n formData.active = item.active;\n formData.value = item.value;\n formData.description = item.description;\n formShow.value = true;\n }\n\n function nextOne() {\n if (!cannotNextItem.value) {\n let index = formDataIndex.value + 1;\n let item = dataList.value[index];\n editOne(item, index);\n }\n }\n\n function saveOne() {\n let isAdd = !formData.id;\n let url = 'parameter/save';\n formRef.value?.validate().then((errMap: any) => {\n if (!errMap) {\n let data: any = {\n ...formData,\n };\n if (isAdd) {\n data.id = undefined;\n }\n http\n .request({\n url,\n method: 'POST',\n type: 'json',\n data,\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n ElMessage.success(data.msg);\n if (!isAdd) {\n dataList.value[formDataIndex.value] = {\n ...formData,\n };\n nextOne();\n } else {\n cancelForm();\n }\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('保存配置失败:', error);\n ElMessage.error(ct('保存失败,请稍后重试'));\n });\n }\n });\n }\n\n function updateActiveStatus(id: number, index: number, active: 'Y' | 'N') {\n http\n .request({\n url: '/parameter/save',\n method: 'POST',\n type: 'json',\n data: {id, active},\n })\n .then((res) => {\n const data = res.data as any;\n if (data.status === 200) {\n const message = active === 'Y' ? ct('启用成功') : ct('禁用成功');\n ElMessage.success(message);\n dataList.value[index].active = active;\n } else {\n ElMessage.error(data.msg);\n }\n })\n .catch((error) => {\n console.error('更新状态失败:', error);\n ElMessage.error(ct('操作失败,请稍后重试'));\n });\n }\n\n // 键盘事件处理函数\n const handleKeydown = (e: KeyboardEvent) => {\n const {key, ctrlKey, altKey} = e;\n if (formShow.value) {\n if (key === 's' && ctrlKey) {\n e.preventDefault();\n e.stopPropagation();\n saveOne();\n }\n if (key === 'ArrowRight' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n nextOne();\n }\n if (key === 'ArrowLeft' && altKey) {\n e.preventDefault();\n e.stopPropagation();\n prevOne();\n }\n }\n };\n\n onMounted(() => {\n getDataList();\n window.addEventListener('keydown', handleKeydown);\n });\n\n onUnmounted(() => {\n window.removeEventListener('keydown', handleKeydown);\n });\n</script>\n<style lang=\"scss\">\n .sys-config-list-container {\n height: 100%;\n display: flex;\n flex-direction: column;\n .sys-config-list-actions {\n padding: 8px 16px;\n box-sizing: border-box;\n display: flex;\n .sys-config-list-conditions {\n padding: 0 8px;\n flex: 1;\n .el-form--inline .el-form-item {\n margin-bottom: 0;\n margin-right: 18px;\n }\n }\n }\n .sys-config-list-actions + .sys-config-list-actions {\n padding-top: 0;\n }\n .el-table {\n flex: 1;\n .table-el-image {\n width: auto;\n height: 30px;\n }\n .table-color-block {\n width: 100px;\n height: 30px;\n display: inline-flex;\n color: white;\n align-items: center;\n justify-content: center;\n }\n }\n .el-pagination {\n padding: 16px 16px 0 16px;\n }\n }\n .sys-config-form-actions {\n display: flex;\n .el-button {\n flex: 1;\n }\n }\n .el-table .disabled-row {\n --el-table-tr-bg-color: var(--el-color-info-light-7);\n }\n</style>\n"],"names":["props","__props","emit","__emit","previewImage","ref","isDragging","fileInput","processFile","file","ct","reader","e","base64","_a","handleDragOver","handleDragLeave","handleDrop","files","handleFileSelect","input","handleDelete","watch","newVal","_createElementBlock","_normalizeClass","_createElementVNode","_hoisted_1","_openBlock","_hoisted_3","_unref","_hoisted_4","_createVNode","_component_YhIcon","tableRef","formRef","tableLoading","listForm","reactive","dataList","tableRowClassName","row","rowIndex","getDataList","isReset","name","code","pageNum","pageSize","http","res","data","error","ElMessage","rowClickHandler","resetList","formDataIndex","formShow","cannotNextItem","computed","cannotPrevItem","formData","formRules","booleanValue","val","CODE_SUGGESTIONS","queryCodeSuggestions","queryString","cb","results","item","cancelForm","addOne","prevOne","index","editOne","nextOne","saveOne","isAdd","url","errMap","updateActiveStatus","id","active","message","handleKeydown","key","ctrlKey","altKey","onMounted","onUnmounted","_hoisted_2","_component_el_form","_component_el_form_item","_component_el_input","_cache","$event","_component_el_button","_createTextVNode","_createBlock","_component_el_table","_component_el_table_column","type","value","_component_el_image","_component_el_tag","_Fragment","_withCtx","_toDisplayString","$index","_withModifiers","_component_el_pagination","_component_el_dialog","_component_el_row","_component_el_col","_component_el_autocomplete","_component_el_radio_group","_component_el_radio","_component_el_input_number","ImageBase64Choose","_component_el_color_picker","_component_el_date_picker","_component_el_switch"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  import { defineComponent as Z, ref as v, reactive as A, watch as ne, resolveComponent as m, openBlock as B, createBlock as L, unref as f, withCtx as l, createVNode as e, createTextVNode as x, toDisplayString as w, resolveDirective as pe, createElementVNode as J, withDirectives as me, createElementBlock as H, Fragment as X, renderList as le, createCommentVNode as _e, onMounted as ge, normalizeProps as he, guardReactiveProps as ve } from "vue";
2
2
  import { ElMessage as W, ElMessageBox as Ie } from "element-plus";
3
- import { c as d, s as oe, h as be, j as ke, k as ye, l as Ce, m as Ve, n as De, o as we, _ as Me, p as xe, q as Te } from "./index-DsHX4-H-.js";
3
+ import { c as d, s as oe, h as be, j as ke, k as ye, l as Ce, m as Ve, n as De, o as we, _ as Me, p as xe, q as Te } from "./index-vgdcf7LB.js";
4
4
  import { deepClone as Ne } from "yh-client";
5
5
  const Ue = /* @__PURE__ */ Z({
6
6
  __name: "TenantForm",
@@ -702,4 +702,4 @@ const Ue = /* @__PURE__ */ Z({
702
702
  export {
703
703
  Ge as default
704
704
  };
705
- //# sourceMappingURL=TenantList-C9wXnIOV.js.map
705
+ //# sourceMappingURL=TenantList-CUJhZ23v.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TenantList-C9wXnIOV.js","sources":["../components/business/admin/tenant/TenantForm.vue","../components/business/admin/tenant/TenantRoleManage.vue","../components/business/admin/tenant/TenantList.vue"],"sourcesContent":["<template>\n <el-dialog v-model=\"visible\" width=\"800px\" :title=\"ct('租户信息')\">\n <el-form ref=\"formRef\" :rules=\"rules\" :model=\"form\" label-width=\"140px\">\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"adClientId\" :label=\"ct('客户端ID')\">\n <el-input v-model=\"form.adClientId\" disabled :placeholder=\"ct('自动生成')\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"code\" :label=\"ct('客户端编码')\">\n <el-input v-model=\"form.code\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"name\" :label=\"ct('客户端名称')\">\n <el-input v-model=\"form.name\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"orgValue\" :label=\"ct('组织机构编码')\">\n <el-input v-model=\"form.orgValue\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"orgName\" :label=\"ct('组织机构名称')\">\n <el-input v-model=\"form.orgName\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"userName\" :label=\"ct('用户名称')\">\n <el-input v-model=\"form.userName\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"userUserName\" :label=\"ct('登录账户名称')\">\n <el-input v-model=\"form.userUserName\" :disabled=\"type === 'add' ? false : true\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"24\">\n <el-form-item :label=\"ct('客户端备注')\">\n <el-input v-model=\"form.description\" type=\"textarea\" :rows=\"3\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <el-button type=\"primary\" @click=\"ok()\">{{ ct('保存') }}</el-button>\n <el-button @click=\"cancel()\">{{ ct('取消') }}</el-button>\n </template>\n </el-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watch } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport type { FormInstance, FormRules } from 'element-plus';\nimport { saTenantInsert, saTenantGetById, saTenantUpdate } from '../../../../api/tenantApi';\nimport type { TenantInfo, FormActionData } from './types';\n\timport { ct } from '../../../../utils/i18nHelp';\n\ninterface Props {\n actionData: FormActionData;\n}\nconst props = defineProps<Props>();\nconst emit = defineEmits<{\n getinfo: [];\n}>();\n\nconst visible = ref(false);\nconst formRef = ref<FormInstance>();\nconst type = ref<'add' | 'edit'>('add');\nconst form = reactive<Partial<TenantInfo>>({});\n\nconst rules: FormRules<TenantInfo> = {\n code: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n name: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n orgValue: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n orgName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n userName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n userUserName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n};\n\nconst getById = (id: string) => {\n const param = {\n adClientId: id,\n };\n saTenantGetById(param).then((res) => {\n if ((res.data as any).data) {\n Object.assign(form, (res.data as any).data);\n }\n });\n};\n\nconst ok = async () => {\n if (!formRef.value) return;\n try {\n await formRef.value.validate();\n if (type.value === 'add') {\n saTenantInsert(form).then((res) => {\n if ((res.data as any).data) {\n ElMessage.success(ct('保存成功!'));\n visible.value = false;\n emit('getinfo');\n }\n });\n } else if (type.value === 'edit') {\n saTenantUpdate(form).then((res) => {\n if ((res.data as any).data) {\n ElMessage.success(ct('保存成功!'));\n visible.value = false;\n emit('getinfo');\n }\n });\n }\n } catch {\n // 验证失败\n }\n};\n\nconst cancel = () => {\n visible.value = false;\n};\n\nwatch(\n () => props.actionData,\n (val) => {\n type.value = val.type;\n if (val.type === 'add') {\n Object.keys(form).forEach((key) => {\n delete form[key as keyof TenantInfo];\n });\n visible.value = true;\n } else if (val.type === 'edit') {\n getById(val.id!);\n visible.value = true;\n } else {\n visible.value = false;\n }\n },\n { deep: true }\n);\n</script>\n","<template>\n <el-drawer :title=\"ct('分配权限')\" v-model=\"visible\" :width=\"800\" @close=\"cancel\">\n <el-row>\n <el-col :span=\"12\">\n <el-card :title=\"ct('菜单权限')\">\n <div class=\"drawer-content\">\n <el-tree\n ref=\"treeRef\"\n :data=\"permData\"\n :props=\"{ label: 'title', children: 'children' }\"\n show-checkbox\n node-key=\"key\"\n default-expand-parent\n v-loading=\"treeLoading\"\n @current-change=\"selectTree\"\n @check-change=\"checkedMenuTree\"></el-tree>\n </div>\n </el-card>\n </el-col>\n <el-col :span=\"12\">\n <el-card :title=\"ct('按钮权限')\">\n <div class=\"drawer-content\">\n <el-card v-for=\"(item, key) in curWindowBtnList\" :key=\"key\" style=\"margin-top: 5px\">\n <template #header>\n <span style=\"margin-left: 10px\">{{ item.NAME }}</span>\n <el-checkbox\n v-model=\"item.checkAll\"\n :indeterminate=\"item.indeterminate\"\n @change=\"handleCheckAll($event, item, key)\">\n {{ ct('全选') }}\n </el-checkbox>\n </template>\n <el-checkbox-group\n :model-value=\"item.checkChilds\"\n @update:model-value=\"(val) => checkAllGroupChange(val, key)\">\n <el-checkbox v-for=\"child in item.childs\" :key=\"child.ID\" :label=\"child.ID\">\n {{ child.NAME }}\n </el-checkbox>\n </el-checkbox-group>\n </el-card>\n <el-empty v-if=\"curWindowBtnList.length === 0\" :description=\"ct('暂无权限按钮')\"></el-empty>\n <div class=\"drawer-footer br\">\n <el-button type=\"primary\" :loading=\"submitPermLoading\" @click=\"submitPermEdit\">\n {{ ct('提交') }}\n </el-button>\n <el-button @click=\"cancel\">{{ ct('取消') }}</el-button>\n </div>\n </div>\n </el-card>\n </el-col>\n </el-row>\n </el-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watch, nextTick } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { deepClone } from 'yh-client';\n\timport { ct } from '../../../../utils/i18nHelp';\nimport {\n saTenantGetById,\n saTenantGetMenuList,\n saTenantGetMenuWindowButton,\n saTenantGetRoleMenus,\n saTenantGetRoleWindowButton,\n saTenantSetMenus,\n} from '../../../../api/tenantApi';\nimport type { MenuTreeNode, WindowButton, ButtonPermissionMap, AuthActionData } from './types';\n\ninterface Props {\n actionData: AuthActionData;\n}\nconst props = defineProps<Props>();\nconst emit = defineEmits<{\n getinfo: [];\n}>();\n\nconst tenantInfo = reactive<Record<string, any>>({});\nconst submitPermLoading = ref(false);\nconst saveWinBtnList = ref<string[]>([]);\nconst unCheckedMenuTreeData = ref<Record<string, string>>({});\nconst roleMenuData = ref<Record<string, any>>({});\nconst curWindowBtnList = ref<WindowButton[]>([]);\nconst curSelectedMenuId = ref('');\nconst roleSavedBtnPermMap = ref<ButtonPermissionMap>({});\nconst checkedMenuKeys = ref<string[]>([]);\nconst expandedMenuKeys = ref<string[]>([]);\nconst permData = ref<MenuTreeNode[]>([]);\nconst treeLoading = ref(true);\nconst id = ref('');\nconst visible = ref(false);\nconst treeRef = ref();\n\nconst resetBtnPerData = () => {\n roleSavedBtnPermMap.value = {};\n unCheckedMenuTreeData.value = {};\n roleMenuData.value = {};\n curWindowBtnList.value = [];\n saveWinBtnList.value = [];\n};\n\nconst submitPermEdit = () => {\n submitPermLoading.value = true;\n const permMenuIds = checkedMenuKeys.value.join(',');\n const permMenuBtnIds: Record<string, string[]> = {};\n Object.keys(roleSavedBtnPermMap.value).forEach((key) => {\n permMenuBtnIds['W_' + key] = roleSavedBtnPermMap.value[key];\n });\n saTenantSetMenus({\n roleId: tenantInfo.adRoleId,\n ids: permMenuIds,\n btns: JSON.stringify(permMenuBtnIds),\n adClientId: tenantInfo.adClientId,\n adOrgId: tenantInfo.adOrgId,\n }).then((res) => {\n submitPermLoading.value = false;\n const data = res.data as any;\n if (data.result) {\n ElMessage.success(ct('操作成功'));\n cancel();\n } else {\n ElMessage.error(data.msg);\n }\n });\n};\n\nconst getRoleWindowButton = (roleId: string) => {\n saTenantGetRoleWindowButton({ adRoleId: roleId }).then((res) => {\n if ((res.data as any).data) {\n const data = (res.data as any).data;\n const roleBtnPermMap: ButtonPermissionMap = {};\n data.forEach((e: any) => {\n if (!roleBtnPermMap[e.sysWindowId]) {\n roleBtnPermMap[e.sysWindowId] = [];\n }\n roleBtnPermMap[e.sysWindowId].push(e.sysWindowButtonId);\n });\n roleSavedBtnPermMap.value = roleBtnPermMap;\n }\n });\n};\n\nconst cancel = () => {\n resetBtnPerData();\n visible.value = false;\n emit('getinfo');\n};\n\nconst getById = async (idVal: string) => {\n const param = {\n adClientId: idVal,\n };\n let data: any;\n await saTenantGetById(param).then((res) => {\n if ((res.data as any).data) {\n data = (res.data as any).data;\n }\n });\n return data;\n};\n\nconst getRoleMenus = async (roleId: string) => {\n const roleMenuDataTemp: Record<string, any> = {};\n expandedMenuKeys.value = [];\n checkedMenuKeys.value = [];\n\n await saTenantGetRoleMenus({ adRoleId: roleId }).then((res) => {\n const data = res.data as any;\n if (data.result) {\n data.data.forEach((e: any) => {\n if (e.MENU_TYPE !== 'GROUP') {\n roleMenuDataTemp[e.AD_MENU_ID] = e;\n checkedMenuKeys.value.push(e.AD_MENU_ID);\n } else {\n expandedMenuKeys.value.push(e.AD_MENU_ID);\n }\n });\n }\n });\n return roleMenuDataTemp;\n};\n\nconst initMenu = (roleMenuDataTemp: Record<string, any>) => {\n saTenantGetMenuList({}).then((res) => {\n const resData = res.data as any;\n if (resData.data) {\n const newTreeData: MenuTreeNode[] = [];\n const data = resData.data;\n data.forEach((e: any) => {\n newTreeData.push(parseTreeData(e, 0));\n });\n calNewTreeData(newTreeData, roleMenuDataTemp);\n permData.value = newTreeData;\n treeLoading.value = false;\n }\n });\n};\n\nconst calNewTreeData = (newTreeData: MenuTreeNode[], roleMenuDataTemp: Record<string, any>): number => {\n let checkedCount = 0;\n newTreeData.forEach((e) => {\n e.expand = true;\n\n if (roleMenuDataTemp[e.adMenuId]) {\n e.checked = true;\n checkedCount++;\n }\n\n if (e.children && e.children.length > 0) {\n const sonCheckedCount = calNewTreeData(e.children, roleMenuDataTemp);\n if (sonCheckedCount === e.children.length) {\n e.checked = true;\n e.selectable = true;\n e.indeterminate = false;\n } else if (sonCheckedCount > 0 && sonCheckedCount < e.children.length) {\n e.indeterminate = true;\n e.checked = false;\n e.selectable = true;\n } else {\n e.checked = false;\n e.indeterminate = false;\n }\n }\n });\n return checkedCount;\n};\n\nconst selectTree = (data: MenuTreeNode | null, node: any) => {\n if (data) {\n curSelectedMenuId.value = data.sysWindowId || '';\n if (!curSelectedMenuId.value) {\n curWindowBtnList.value = [];\n saveWinBtnList.value = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n return;\n }\n\n saTenantGetMenuWindowButton({ sysWindowId: curSelectedMenuId.value }).then((res) => {\n const resData = res.data as any;\n const { result, data: resDataInner } = resData;\n if (result && resDataInner) {\n const roleBtnData: WindowButton[] = [];\n const tempQyBtnData: Record<string, any[]> = {};\n\n resDataInner.forEach((tData: any) => {\n if (tData.TYPE === 'QY') {\n roleBtnData.push(tData);\n tempQyBtnData[tData.ID] = [];\n } else {\n if (tempQyBtnData[tData.PARENT_ID]) {\n tempQyBtnData[tData.PARENT_ID].push(tData);\n }\n }\n });\n\n roleBtnData.forEach((item) => {\n item.childs = tempQyBtnData[item.ID];\n const checkChilds = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n let tcount = 0;\n tempQyBtnData[item.ID].forEach((es: any) => {\n if (checkChilds.includes(es.ID)) {\n tcount++;\n }\n });\n if (tcount === tempQyBtnData[item.ID].length) {\n item.checkAll = true;\n item.indeterminate = false;\n } else if (tcount > 0) {\n item.checkAll = false;\n item.indeterminate = true;\n } else {\n item.checkAll = false;\n item.indeterminate = false;\n }\n item.checkChilds = checkChilds;\n });\n\n curWindowBtnList.value = roleBtnData;\n saveWinBtnList.value = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n }\n });\n }\n};\n\nconst checkedMenuTree = (data: MenuTreeNode, checked: boolean) => {\n if (data.menuType !== 'GROUP') {\n if (!checked) {\n if (!unCheckedMenuTreeData.value[data.adMenuId]) {\n unCheckedMenuTreeData.value[data.adMenuId] = '1';\n }\n } else {\n delete unCheckedMenuTreeData.value[data.adMenuId];\n }\n } else {\n getTreeCheckedDataLoop(data, !checked);\n }\n};\n\nconst getTreeCheckedDataLoop = (cv: MenuTreeNode, delFlag: boolean) => {\n if (delFlag) {\n if (!unCheckedMenuTreeData.value[cv.adMenuId]) {\n unCheckedMenuTreeData.value[cv.adMenuId] = '1';\n }\n if (cv.children && cv.children.length > 0) {\n cv.children.forEach((ss) => {\n getTreeCheckedDataLoop(ss, delFlag);\n });\n }\n } else {\n delete unCheckedMenuTreeData.value[cv.adMenuId];\n }\n};\n\nconst handleCheckAll = (checked: boolean, item: WindowButton, key: number) => {\n let checkChilds: string[] = [];\n if (!item.indeterminate) {\n item.checkAll = false;\n item.indeterminate = false;\n item.checkChilds = checkChilds;\n } else {\n checkChilds = item.childs.map((child) => child.ID);\n item.checkAll = true;\n item.indeterminate = false;\n item.checkChilds = checkChilds;\n }\n\n roleSavedBtnPermMap.value[curSelectedMenuId.value] = checkChilds;\n curWindowBtnList.value[key] = item;\n};\n\nconst checkAllGroupChange = (event: string[], key: number) => {\n const list = deepClone(curWindowBtnList.value);\n const currentItem = list[key];\n if (event.length > 0) {\n let containFlag = 0;\n let okCount = 0;\n for (let i = 0; i < currentItem.childs.length; i++) {\n if (event.includes(currentItem.childs[i].ID)) {\n okCount++;\n }\n }\n if (okCount === currentItem.childs.length) {\n containFlag = 2;\n } else {\n containFlag = 1;\n }\n if (containFlag === 1) {\n currentItem.checkAll = false;\n currentItem.indeterminate = okCount === 0 ? false : true;\n } else if (containFlag === 2) {\n currentItem.checkAll = true;\n currentItem.indeterminate = false;\n }\n } else {\n currentItem.checkAll = false;\n currentItem.indeterminate = false;\n }\n currentItem.checkChilds = event;\n curWindowBtnList.value[key] = currentItem;\n roleSavedBtnPermMap.value[curSelectedMenuId.value] = event;\n};\n\nconst parseTreeData = (curLevelData: any, curLevel: number): MenuTreeNode => {\n const newLevelData: any = { data: curLevelData };\n newLevelData.key = curLevelData.adMenuId;\n newLevelData.title = curLevelData.name;\n\n if (curLevelData._childs && curLevelData._childs.length > 0) {\n curLevelData._childs.forEach((sonTreeData: any) => {\n if (!newLevelData.children) {\n newLevelData.children = [];\n }\n newLevelData.children.push(parseTreeData(sonTreeData, curLevel + 1));\n });\n newLevelData.isLeaf = false;\n } else {\n newLevelData.isLeaf = true;\n }\n delete curLevelData._childs;\n return newLevelData;\n};\n\nwatch(\n () => props.actionData,\n async (val) => {\n id.value = val.id;\n const dataTemp = await getById(val.id);\n Object.assign(tenantInfo, dataTemp);\n getRoleWindowButton(tenantInfo.adRoleId);\n const roleMenuDataTemp = await getRoleMenus(tenantInfo.adRoleId);\n initMenu(roleMenuDataTemp);\n visible.value = true;\n },\n { deep: true }\n);\n</script>\n\n<style scoped>\n.drawer-footer {\n z-index: 10;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n border-top: 1px solid #e8e8e8;\n padding: 10px 16px;\n text-align: left;\n background: #fff;\n}\n\n.drawer-content {\n height: calc(100vh - 51px - 32px - 32px - 51px - 2px);\n overflow: auto;\n}\n</style>\n","<template>\n <el-form\n :model=\"searchForm\"\n class=\"ant-advanced-search-form\"\n inline>\n <el-form-item :label=\"ct('客户端编码')\">\n <el-input v-model=\"searchForm.code\" />\n </el-form-item>\n <el-form-item :label=\"ct('客户端名称')\">\n <el-input v-model=\"searchForm.name\" />\n </el-form-item>\n <el-form-item>\n <el-button\n type=\"primary\"\n @click=\"query()\">\n <YhIcon\n slot=\"icon\"\n name=\"search\"></YhIcon>\n {{ ct('查询') }}\n </el-button>\n </el-form-item>\n <el-form-item>\n <el-button\n type=\"primary\"\n @click=\"add()\">\n <YhIcon\n slot=\"icon\"\n name=\"plus\"></YhIcon>\n {{ ct('初始化租户') }}\n </el-button>\n </el-form-item>\n </el-form>\n <vxe-grid v-bind=\"pageListOptions\">\n <template #action=\"{row}\">\n <el-button\n type=\"primary\"\n size=\"small\"\n text\n style=\"margin-right: 5px\"\n @click=\"edit(row)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n type=\"primary\"\n size=\"small\"\n text\n @click=\"authorization(row)\">\n {{ ct('授权') }}\n </el-button>\n <el-button\n type=\"danger\"\n size=\"small\"\n text\n @click=\"remove(row)\">\n {{ ct('删除') }}\n </el-button>\n </template>\n <template #pager>\n <vxe-pager\n :layouts=\"[\n 'Sizes',\n 'PrevJump',\n 'PrevPage',\n 'Number',\n 'NextPage',\n 'NextJump',\n 'FullJump',\n 'Total',\n ]\"\n v-model:current-page=\"tablePage.currentPage\"\n v-model:page-size=\"tablePage.pageSize\"\n :total=\"tablePage.total\"\n @page-change=\"handlePageChange\"></vxe-pager>\n </template>\n </vxe-grid>\n <TenantForm\n :actionData=\"toFormData\"\n @getinfo=\"query()\"></TenantForm>\n <TenantRoleManage\n :actionData=\"toRoleData\"\n @getinfo=\"query()\"></TenantRoleManage>\n</template>\n\n<script setup lang=\"ts\">\n import {reactive, onMounted} from 'vue';\n import {ElMessage, ElMessageBox} from 'element-plus';\n import type {VxeGridProps} from 'vxe-table';\n import TenantForm from './TenantForm.vue';\n import TenantRoleManage from './TenantRoleManage.vue';\n import {saTenantDelete, saTenantListPage} from '../../../../api/tenantApi';\n import type {TenantInfo, SearchForm, TablePage, FormActionData, AuthActionData} from './types';\n\t import {ct} from '../../../../utils/i18nHelp';\n\n // 响应式数据\n const toFormData = reactive<FormActionData>({} as FormActionData);\n const toRoleData = reactive<AuthActionData>({} as AuthActionData);\n const tablePage = reactive<TablePage>({\n total: 0,\n currentPage: 1,\n pageSize: 10,\n });\n const pageListOptions = reactive<VxeGridProps>({\n loading: false,\n border: false,\n showOverflow: true,\n align: 'center',\n columns: [\n {field: 'adClientId', title: ct('租户ID'), fixed: 'left', width: 200},\n {field: 'code', title: ct('客户端编码')},\n {field: 'name', title: ct('客户端名称')},\n {field: 'action', title: '操作', fixed: 'right', width: 300, slots: {default: 'action'}},\n ],\n data: [],\n });\n const searchForm = reactive<SearchForm>({});\n\n // 方法\n const handlePageChange = ({currentPage, pageSize}: {currentPage: number; pageSize: number}) => {\n tablePage.currentPage = currentPage;\n tablePage.pageSize = pageSize;\n query();\n };\n\n const query = () => {\n const param = {\n page: tablePage.currentPage,\n size: tablePage.pageSize,\n name: searchForm.name,\n code: searchForm.code,\n };\n pageListOptions.loading = true;\n saTenantListPage(param).then((res) => {\n const resData = res.data as any;\n if (resData.data.records) {\n pageListOptions.data = resData.data.records;\n tablePage.total = resData.data.total;\n tablePage.currentPage = resData.data.current;\n }\n pageListOptions.loading = false;\n });\n };\n\n const add = () => {\n Object.assign(toFormData, {type: 'add'} as FormActionData);\n };\n\n const edit = (row: TenantInfo) => {\n Object.assign(toFormData, {type: 'edit', id: row.adClientId});\n };\n\n const authorization = (row: TenantInfo) => {\n Object.assign(toRoleData, {id: row.adClientId});\n };\n\n const remove = (row: TenantInfo) => {\n ElMessageBox.confirm('这将删除租户以及租户下所有数据!是否删除?', '请确认', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n .then(() => {\n const param = {\n adClientId: row.adClientId,\n };\n saTenantDelete(param).then((res) => {\n const resData = res.data as any;\n if (resData.result) {\n ElMessage.success(resData.msg);\n query();\n } else {\n ElMessage.error(resData.msg);\n }\n });\n })\n .catch(() => {});\n };\n\n // 生命周期\n onMounted(() => {\n query();\n });\n</script>\n"],"names":["props","__props","emit","__emit","visible","ref","formRef","type","form","reactive","rules","ct","getById","id","saTenantGetById","res","ok","saTenantInsert","ElMessage","saTenantUpdate","cancel","watch","val","key","_createBlock","_component_el_dialog","$event","_unref","_createVNode","_component_el_button","_component_el_form","_component_el_row","_component_el_col","_component_el_form_item","_component_el_input","_cache","tenantInfo","submitPermLoading","saveWinBtnList","unCheckedMenuTreeData","roleMenuData","curWindowBtnList","curSelectedMenuId","roleSavedBtnPermMap","checkedMenuKeys","expandedMenuKeys","permData","treeLoading","treeRef","resetBtnPerData","submitPermEdit","permMenuIds","permMenuBtnIds","saTenantSetMenus","data","getRoleWindowButton","roleId","saTenantGetRoleWindowButton","roleBtnPermMap","e","idVal","param","getRoleMenus","roleMenuDataTemp","saTenantGetRoleMenus","initMenu","saTenantGetMenuList","resData","newTreeData","parseTreeData","calNewTreeData","checkedCount","sonCheckedCount","selectTree","node","saTenantGetMenuWindowButton","result","resDataInner","roleBtnData","tempQyBtnData","tData","item","checkChilds","tcount","es","checkedMenuTree","checked","getTreeCheckedDataLoop","cv","delFlag","ss","handleCheckAll","child","checkAllGroupChange","event","currentItem","deepClone","containFlag","okCount","i","curLevelData","curLevel","newLevelData","sonTreeData","dataTemp","_component_el_drawer","_component_el_card","_createElementVNode","_hoisted_1","_component_el_tree","_hoisted_2","_openBlock","_createElementBlock","_Fragment","_renderList","_hoisted_3","_toDisplayString","_component_el_checkbox","_component_el_checkbox_group","_createTextVNode","_component_el_empty","_hoisted_4","toFormData","toRoleData","tablePage","pageListOptions","searchForm","handlePageChange","currentPage","pageSize","query","saTenantListPage","add","edit","row","authorization","remove","ElMessageBox","saTenantDelete","onMounted","_component_YhIcon","_component_vxe_grid","_withCtx","_component_vxe_pager","TenantForm","TenantRoleManage"],"mappings":"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"}
1
+ {"version":3,"file":"TenantList-CUJhZ23v.js","sources":["../components/business/admin/tenant/TenantForm.vue","../components/business/admin/tenant/TenantRoleManage.vue","../components/business/admin/tenant/TenantList.vue"],"sourcesContent":["<template>\n <el-dialog v-model=\"visible\" width=\"800px\" :title=\"ct('租户信息')\">\n <el-form ref=\"formRef\" :rules=\"rules\" :model=\"form\" label-width=\"140px\">\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"adClientId\" :label=\"ct('客户端ID')\">\n <el-input v-model=\"form.adClientId\" disabled :placeholder=\"ct('自动生成')\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"code\" :label=\"ct('客户端编码')\">\n <el-input v-model=\"form.code\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"name\" :label=\"ct('客户端名称')\">\n <el-input v-model=\"form.name\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"orgValue\" :label=\"ct('组织机构编码')\">\n <el-input v-model=\"form.orgValue\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"orgName\" :label=\"ct('组织机构名称')\">\n <el-input v-model=\"form.orgName\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"12\">\n <el-form-item prop=\"userName\" :label=\"ct('用户名称')\">\n <el-input v-model=\"form.userName\"></el-input>\n </el-form-item>\n </el-col>\n <el-col :span=\"12\">\n <el-form-item prop=\"userUserName\" :label=\"ct('登录账户名称')\">\n <el-input v-model=\"form.userUserName\" :disabled=\"type === 'add' ? false : true\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n <el-row>\n <el-col :span=\"24\">\n <el-form-item :label=\"ct('客户端备注')\">\n <el-input v-model=\"form.description\" type=\"textarea\" :rows=\"3\"></el-input>\n </el-form-item>\n </el-col>\n </el-row>\n </el-form>\n <template #footer>\n <el-button type=\"primary\" @click=\"ok()\">{{ ct('保存') }}</el-button>\n <el-button @click=\"cancel()\">{{ ct('取消') }}</el-button>\n </template>\n </el-dialog>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watch } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport type { FormInstance, FormRules } from 'element-plus';\nimport { saTenantInsert, saTenantGetById, saTenantUpdate } from '../../../../api/tenantApi';\nimport type { TenantInfo, FormActionData } from './types';\n\timport { ct } from '../../../../utils/i18nHelp';\n\ninterface Props {\n actionData: FormActionData;\n}\nconst props = defineProps<Props>();\nconst emit = defineEmits<{\n getinfo: [];\n}>();\n\nconst visible = ref(false);\nconst formRef = ref<FormInstance>();\nconst type = ref<'add' | 'edit'>('add');\nconst form = reactive<Partial<TenantInfo>>({});\n\nconst rules: FormRules<TenantInfo> = {\n code: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n name: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n orgValue: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n orgName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n userName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n userUserName: [{ required: true, message: ct('必须输入该项'), trigger: 'blur' }],\n};\n\nconst getById = (id: string) => {\n const param = {\n adClientId: id,\n };\n saTenantGetById(param).then((res) => {\n if ((res.data as any).data) {\n Object.assign(form, (res.data as any).data);\n }\n });\n};\n\nconst ok = async () => {\n if (!formRef.value) return;\n try {\n await formRef.value.validate();\n if (type.value === 'add') {\n saTenantInsert(form).then((res) => {\n if ((res.data as any).data) {\n ElMessage.success(ct('保存成功!'));\n visible.value = false;\n emit('getinfo');\n }\n });\n } else if (type.value === 'edit') {\n saTenantUpdate(form).then((res) => {\n if ((res.data as any).data) {\n ElMessage.success(ct('保存成功!'));\n visible.value = false;\n emit('getinfo');\n }\n });\n }\n } catch {\n // 验证失败\n }\n};\n\nconst cancel = () => {\n visible.value = false;\n};\n\nwatch(\n () => props.actionData,\n (val) => {\n type.value = val.type;\n if (val.type === 'add') {\n Object.keys(form).forEach((key) => {\n delete form[key as keyof TenantInfo];\n });\n visible.value = true;\n } else if (val.type === 'edit') {\n getById(val.id!);\n visible.value = true;\n } else {\n visible.value = false;\n }\n },\n { deep: true }\n);\n</script>\n","<template>\n <el-drawer :title=\"ct('分配权限')\" v-model=\"visible\" :width=\"800\" @close=\"cancel\">\n <el-row>\n <el-col :span=\"12\">\n <el-card :title=\"ct('菜单权限')\">\n <div class=\"drawer-content\">\n <el-tree\n ref=\"treeRef\"\n :data=\"permData\"\n :props=\"{ label: 'title', children: 'children' }\"\n show-checkbox\n node-key=\"key\"\n default-expand-parent\n v-loading=\"treeLoading\"\n @current-change=\"selectTree\"\n @check-change=\"checkedMenuTree\"></el-tree>\n </div>\n </el-card>\n </el-col>\n <el-col :span=\"12\">\n <el-card :title=\"ct('按钮权限')\">\n <div class=\"drawer-content\">\n <el-card v-for=\"(item, key) in curWindowBtnList\" :key=\"key\" style=\"margin-top: 5px\">\n <template #header>\n <span style=\"margin-left: 10px\">{{ item.NAME }}</span>\n <el-checkbox\n v-model=\"item.checkAll\"\n :indeterminate=\"item.indeterminate\"\n @change=\"handleCheckAll($event, item, key)\">\n {{ ct('全选') }}\n </el-checkbox>\n </template>\n <el-checkbox-group\n :model-value=\"item.checkChilds\"\n @update:model-value=\"(val) => checkAllGroupChange(val, key)\">\n <el-checkbox v-for=\"child in item.childs\" :key=\"child.ID\" :label=\"child.ID\">\n {{ child.NAME }}\n </el-checkbox>\n </el-checkbox-group>\n </el-card>\n <el-empty v-if=\"curWindowBtnList.length === 0\" :description=\"ct('暂无权限按钮')\"></el-empty>\n <div class=\"drawer-footer br\">\n <el-button type=\"primary\" :loading=\"submitPermLoading\" @click=\"submitPermEdit\">\n {{ ct('提交') }}\n </el-button>\n <el-button @click=\"cancel\">{{ ct('取消') }}</el-button>\n </div>\n </div>\n </el-card>\n </el-col>\n </el-row>\n </el-drawer>\n</template>\n\n<script setup lang=\"ts\">\nimport { ref, reactive, watch, nextTick } from 'vue';\nimport { ElMessage } from 'element-plus';\nimport { deepClone } from 'yh-client';\n\timport { ct } from '../../../../utils/i18nHelp';\nimport {\n saTenantGetById,\n saTenantGetMenuList,\n saTenantGetMenuWindowButton,\n saTenantGetRoleMenus,\n saTenantGetRoleWindowButton,\n saTenantSetMenus,\n} from '../../../../api/tenantApi';\nimport type { MenuTreeNode, WindowButton, ButtonPermissionMap, AuthActionData } from './types';\n\ninterface Props {\n actionData: AuthActionData;\n}\nconst props = defineProps<Props>();\nconst emit = defineEmits<{\n getinfo: [];\n}>();\n\nconst tenantInfo = reactive<Record<string, any>>({});\nconst submitPermLoading = ref(false);\nconst saveWinBtnList = ref<string[]>([]);\nconst unCheckedMenuTreeData = ref<Record<string, string>>({});\nconst roleMenuData = ref<Record<string, any>>({});\nconst curWindowBtnList = ref<WindowButton[]>([]);\nconst curSelectedMenuId = ref('');\nconst roleSavedBtnPermMap = ref<ButtonPermissionMap>({});\nconst checkedMenuKeys = ref<string[]>([]);\nconst expandedMenuKeys = ref<string[]>([]);\nconst permData = ref<MenuTreeNode[]>([]);\nconst treeLoading = ref(true);\nconst id = ref('');\nconst visible = ref(false);\nconst treeRef = ref();\n\nconst resetBtnPerData = () => {\n roleSavedBtnPermMap.value = {};\n unCheckedMenuTreeData.value = {};\n roleMenuData.value = {};\n curWindowBtnList.value = [];\n saveWinBtnList.value = [];\n};\n\nconst submitPermEdit = () => {\n submitPermLoading.value = true;\n const permMenuIds = checkedMenuKeys.value.join(',');\n const permMenuBtnIds: Record<string, string[]> = {};\n Object.keys(roleSavedBtnPermMap.value).forEach((key) => {\n permMenuBtnIds['W_' + key] = roleSavedBtnPermMap.value[key];\n });\n saTenantSetMenus({\n roleId: tenantInfo.adRoleId,\n ids: permMenuIds,\n btns: JSON.stringify(permMenuBtnIds),\n adClientId: tenantInfo.adClientId,\n adOrgId: tenantInfo.adOrgId,\n }).then((res) => {\n submitPermLoading.value = false;\n const data = res.data as any;\n if (data.result) {\n ElMessage.success(ct('操作成功'));\n cancel();\n } else {\n ElMessage.error(data.msg);\n }\n });\n};\n\nconst getRoleWindowButton = (roleId: string) => {\n saTenantGetRoleWindowButton({ adRoleId: roleId }).then((res) => {\n if ((res.data as any).data) {\n const data = (res.data as any).data;\n const roleBtnPermMap: ButtonPermissionMap = {};\n data.forEach((e: any) => {\n if (!roleBtnPermMap[e.sysWindowId]) {\n roleBtnPermMap[e.sysWindowId] = [];\n }\n roleBtnPermMap[e.sysWindowId].push(e.sysWindowButtonId);\n });\n roleSavedBtnPermMap.value = roleBtnPermMap;\n }\n });\n};\n\nconst cancel = () => {\n resetBtnPerData();\n visible.value = false;\n emit('getinfo');\n};\n\nconst getById = async (idVal: string) => {\n const param = {\n adClientId: idVal,\n };\n let data: any;\n await saTenantGetById(param).then((res) => {\n if ((res.data as any).data) {\n data = (res.data as any).data;\n }\n });\n return data;\n};\n\nconst getRoleMenus = async (roleId: string) => {\n const roleMenuDataTemp: Record<string, any> = {};\n expandedMenuKeys.value = [];\n checkedMenuKeys.value = [];\n\n await saTenantGetRoleMenus({ adRoleId: roleId }).then((res) => {\n const data = res.data as any;\n if (data.result) {\n data.data.forEach((e: any) => {\n if (e.MENU_TYPE !== 'GROUP') {\n roleMenuDataTemp[e.AD_MENU_ID] = e;\n checkedMenuKeys.value.push(e.AD_MENU_ID);\n } else {\n expandedMenuKeys.value.push(e.AD_MENU_ID);\n }\n });\n }\n });\n return roleMenuDataTemp;\n};\n\nconst initMenu = (roleMenuDataTemp: Record<string, any>) => {\n saTenantGetMenuList({}).then((res) => {\n const resData = res.data as any;\n if (resData.data) {\n const newTreeData: MenuTreeNode[] = [];\n const data = resData.data;\n data.forEach((e: any) => {\n newTreeData.push(parseTreeData(e, 0));\n });\n calNewTreeData(newTreeData, roleMenuDataTemp);\n permData.value = newTreeData;\n treeLoading.value = false;\n }\n });\n};\n\nconst calNewTreeData = (newTreeData: MenuTreeNode[], roleMenuDataTemp: Record<string, any>): number => {\n let checkedCount = 0;\n newTreeData.forEach((e) => {\n e.expand = true;\n\n if (roleMenuDataTemp[e.adMenuId]) {\n e.checked = true;\n checkedCount++;\n }\n\n if (e.children && e.children.length > 0) {\n const sonCheckedCount = calNewTreeData(e.children, roleMenuDataTemp);\n if (sonCheckedCount === e.children.length) {\n e.checked = true;\n e.selectable = true;\n e.indeterminate = false;\n } else if (sonCheckedCount > 0 && sonCheckedCount < e.children.length) {\n e.indeterminate = true;\n e.checked = false;\n e.selectable = true;\n } else {\n e.checked = false;\n e.indeterminate = false;\n }\n }\n });\n return checkedCount;\n};\n\nconst selectTree = (data: MenuTreeNode | null, node: any) => {\n if (data) {\n curSelectedMenuId.value = data.sysWindowId || '';\n if (!curSelectedMenuId.value) {\n curWindowBtnList.value = [];\n saveWinBtnList.value = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n return;\n }\n\n saTenantGetMenuWindowButton({ sysWindowId: curSelectedMenuId.value }).then((res) => {\n const resData = res.data as any;\n const { result, data: resDataInner } = resData;\n if (result && resDataInner) {\n const roleBtnData: WindowButton[] = [];\n const tempQyBtnData: Record<string, any[]> = {};\n\n resDataInner.forEach((tData: any) => {\n if (tData.TYPE === 'QY') {\n roleBtnData.push(tData);\n tempQyBtnData[tData.ID] = [];\n } else {\n if (tempQyBtnData[tData.PARENT_ID]) {\n tempQyBtnData[tData.PARENT_ID].push(tData);\n }\n }\n });\n\n roleBtnData.forEach((item) => {\n item.childs = tempQyBtnData[item.ID];\n const checkChilds = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n let tcount = 0;\n tempQyBtnData[item.ID].forEach((es: any) => {\n if (checkChilds.includes(es.ID)) {\n tcount++;\n }\n });\n if (tcount === tempQyBtnData[item.ID].length) {\n item.checkAll = true;\n item.indeterminate = false;\n } else if (tcount > 0) {\n item.checkAll = false;\n item.indeterminate = true;\n } else {\n item.checkAll = false;\n item.indeterminate = false;\n }\n item.checkChilds = checkChilds;\n });\n\n curWindowBtnList.value = roleBtnData;\n saveWinBtnList.value = roleSavedBtnPermMap.value[curSelectedMenuId.value] || [];\n }\n });\n }\n};\n\nconst checkedMenuTree = (data: MenuTreeNode, checked: boolean) => {\n if (data.menuType !== 'GROUP') {\n if (!checked) {\n if (!unCheckedMenuTreeData.value[data.adMenuId]) {\n unCheckedMenuTreeData.value[data.adMenuId] = '1';\n }\n } else {\n delete unCheckedMenuTreeData.value[data.adMenuId];\n }\n } else {\n getTreeCheckedDataLoop(data, !checked);\n }\n};\n\nconst getTreeCheckedDataLoop = (cv: MenuTreeNode, delFlag: boolean) => {\n if (delFlag) {\n if (!unCheckedMenuTreeData.value[cv.adMenuId]) {\n unCheckedMenuTreeData.value[cv.adMenuId] = '1';\n }\n if (cv.children && cv.children.length > 0) {\n cv.children.forEach((ss) => {\n getTreeCheckedDataLoop(ss, delFlag);\n });\n }\n } else {\n delete unCheckedMenuTreeData.value[cv.adMenuId];\n }\n};\n\nconst handleCheckAll = (checked: boolean, item: WindowButton, key: number) => {\n let checkChilds: string[] = [];\n if (!item.indeterminate) {\n item.checkAll = false;\n item.indeterminate = false;\n item.checkChilds = checkChilds;\n } else {\n checkChilds = item.childs.map((child) => child.ID);\n item.checkAll = true;\n item.indeterminate = false;\n item.checkChilds = checkChilds;\n }\n\n roleSavedBtnPermMap.value[curSelectedMenuId.value] = checkChilds;\n curWindowBtnList.value[key] = item;\n};\n\nconst checkAllGroupChange = (event: string[], key: number) => {\n const list = deepClone(curWindowBtnList.value);\n const currentItem = list[key];\n if (event.length > 0) {\n let containFlag = 0;\n let okCount = 0;\n for (let i = 0; i < currentItem.childs.length; i++) {\n if (event.includes(currentItem.childs[i].ID)) {\n okCount++;\n }\n }\n if (okCount === currentItem.childs.length) {\n containFlag = 2;\n } else {\n containFlag = 1;\n }\n if (containFlag === 1) {\n currentItem.checkAll = false;\n currentItem.indeterminate = okCount === 0 ? false : true;\n } else if (containFlag === 2) {\n currentItem.checkAll = true;\n currentItem.indeterminate = false;\n }\n } else {\n currentItem.checkAll = false;\n currentItem.indeterminate = false;\n }\n currentItem.checkChilds = event;\n curWindowBtnList.value[key] = currentItem;\n roleSavedBtnPermMap.value[curSelectedMenuId.value] = event;\n};\n\nconst parseTreeData = (curLevelData: any, curLevel: number): MenuTreeNode => {\n const newLevelData: any = { data: curLevelData };\n newLevelData.key = curLevelData.adMenuId;\n newLevelData.title = curLevelData.name;\n\n if (curLevelData._childs && curLevelData._childs.length > 0) {\n curLevelData._childs.forEach((sonTreeData: any) => {\n if (!newLevelData.children) {\n newLevelData.children = [];\n }\n newLevelData.children.push(parseTreeData(sonTreeData, curLevel + 1));\n });\n newLevelData.isLeaf = false;\n } else {\n newLevelData.isLeaf = true;\n }\n delete curLevelData._childs;\n return newLevelData;\n};\n\nwatch(\n () => props.actionData,\n async (val) => {\n id.value = val.id;\n const dataTemp = await getById(val.id);\n Object.assign(tenantInfo, dataTemp);\n getRoleWindowButton(tenantInfo.adRoleId);\n const roleMenuDataTemp = await getRoleMenus(tenantInfo.adRoleId);\n initMenu(roleMenuDataTemp);\n visible.value = true;\n },\n { deep: true }\n);\n</script>\n\n<style scoped>\n.drawer-footer {\n z-index: 10;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n border-top: 1px solid #e8e8e8;\n padding: 10px 16px;\n text-align: left;\n background: #fff;\n}\n\n.drawer-content {\n height: calc(100vh - 51px - 32px - 32px - 51px - 2px);\n overflow: auto;\n}\n</style>\n","<template>\n <el-form\n :model=\"searchForm\"\n class=\"ant-advanced-search-form\"\n inline>\n <el-form-item :label=\"ct('客户端编码')\">\n <el-input v-model=\"searchForm.code\" />\n </el-form-item>\n <el-form-item :label=\"ct('客户端名称')\">\n <el-input v-model=\"searchForm.name\" />\n </el-form-item>\n <el-form-item>\n <el-button\n type=\"primary\"\n @click=\"query()\">\n <YhIcon\n slot=\"icon\"\n name=\"search\"></YhIcon>\n {{ ct('查询') }}\n </el-button>\n </el-form-item>\n <el-form-item>\n <el-button\n type=\"primary\"\n @click=\"add()\">\n <YhIcon\n slot=\"icon\"\n name=\"plus\"></YhIcon>\n {{ ct('初始化租户') }}\n </el-button>\n </el-form-item>\n </el-form>\n <vxe-grid v-bind=\"pageListOptions\">\n <template #action=\"{row}\">\n <el-button\n type=\"primary\"\n size=\"small\"\n text\n style=\"margin-right: 5px\"\n @click=\"edit(row)\">\n {{ ct('编辑') }}\n </el-button>\n <el-button\n type=\"primary\"\n size=\"small\"\n text\n @click=\"authorization(row)\">\n {{ ct('授权') }}\n </el-button>\n <el-button\n type=\"danger\"\n size=\"small\"\n text\n @click=\"remove(row)\">\n {{ ct('删除') }}\n </el-button>\n </template>\n <template #pager>\n <vxe-pager\n :layouts=\"[\n 'Sizes',\n 'PrevJump',\n 'PrevPage',\n 'Number',\n 'NextPage',\n 'NextJump',\n 'FullJump',\n 'Total',\n ]\"\n v-model:current-page=\"tablePage.currentPage\"\n v-model:page-size=\"tablePage.pageSize\"\n :total=\"tablePage.total\"\n @page-change=\"handlePageChange\"></vxe-pager>\n </template>\n </vxe-grid>\n <TenantForm\n :actionData=\"toFormData\"\n @getinfo=\"query()\"></TenantForm>\n <TenantRoleManage\n :actionData=\"toRoleData\"\n @getinfo=\"query()\"></TenantRoleManage>\n</template>\n\n<script setup lang=\"ts\">\n import {reactive, onMounted} from 'vue';\n import {ElMessage, ElMessageBox} from 'element-plus';\n import type {VxeGridProps} from 'vxe-table';\n import TenantForm from './TenantForm.vue';\n import TenantRoleManage from './TenantRoleManage.vue';\n import {saTenantDelete, saTenantListPage} from '../../../../api/tenantApi';\n import type {TenantInfo, SearchForm, TablePage, FormActionData, AuthActionData} from './types';\n\t import {ct} from '../../../../utils/i18nHelp';\n\n // 响应式数据\n const toFormData = reactive<FormActionData>({} as FormActionData);\n const toRoleData = reactive<AuthActionData>({} as AuthActionData);\n const tablePage = reactive<TablePage>({\n total: 0,\n currentPage: 1,\n pageSize: 10,\n });\n const pageListOptions = reactive<VxeGridProps>({\n loading: false,\n border: false,\n showOverflow: true,\n align: 'center',\n columns: [\n {field: 'adClientId', title: ct('租户ID'), fixed: 'left', width: 200},\n {field: 'code', title: ct('客户端编码')},\n {field: 'name', title: ct('客户端名称')},\n {field: 'action', title: '操作', fixed: 'right', width: 300, slots: {default: 'action'}},\n ],\n data: [],\n });\n const searchForm = reactive<SearchForm>({});\n\n // 方法\n const handlePageChange = ({currentPage, pageSize}: {currentPage: number; pageSize: number}) => {\n tablePage.currentPage = currentPage;\n tablePage.pageSize = pageSize;\n query();\n };\n\n const query = () => {\n const param = {\n page: tablePage.currentPage,\n size: tablePage.pageSize,\n name: searchForm.name,\n code: searchForm.code,\n };\n pageListOptions.loading = true;\n saTenantListPage(param).then((res) => {\n const resData = res.data as any;\n if (resData.data.records) {\n pageListOptions.data = resData.data.records;\n tablePage.total = resData.data.total;\n tablePage.currentPage = resData.data.current;\n }\n pageListOptions.loading = false;\n });\n };\n\n const add = () => {\n Object.assign(toFormData, {type: 'add'} as FormActionData);\n };\n\n const edit = (row: TenantInfo) => {\n Object.assign(toFormData, {type: 'edit', id: row.adClientId});\n };\n\n const authorization = (row: TenantInfo) => {\n Object.assign(toRoleData, {id: row.adClientId});\n };\n\n const remove = (row: TenantInfo) => {\n ElMessageBox.confirm('这将删除租户以及租户下所有数据!是否删除?', '请确认', {\n confirmButtonText: '确定',\n cancelButtonText: '取消',\n type: 'warning',\n })\n .then(() => {\n const param = {\n adClientId: row.adClientId,\n };\n saTenantDelete(param).then((res) => {\n const resData = res.data as any;\n if (resData.result) {\n ElMessage.success(resData.msg);\n query();\n } else {\n ElMessage.error(resData.msg);\n }\n });\n })\n .catch(() => {});\n };\n\n // 生命周期\n onMounted(() => {\n query();\n });\n</script>\n"],"names":["props","__props","emit","__emit","visible","ref","formRef","type","form","reactive","rules","ct","getById","id","saTenantGetById","res","ok","saTenantInsert","ElMessage","saTenantUpdate","cancel","watch","val","key","_createBlock","_component_el_dialog","$event","_unref","_createVNode","_component_el_button","_component_el_form","_component_el_row","_component_el_col","_component_el_form_item","_component_el_input","_cache","tenantInfo","submitPermLoading","saveWinBtnList","unCheckedMenuTreeData","roleMenuData","curWindowBtnList","curSelectedMenuId","roleSavedBtnPermMap","checkedMenuKeys","expandedMenuKeys","permData","treeLoading","treeRef","resetBtnPerData","submitPermEdit","permMenuIds","permMenuBtnIds","saTenantSetMenus","data","getRoleWindowButton","roleId","saTenantGetRoleWindowButton","roleBtnPermMap","e","idVal","param","getRoleMenus","roleMenuDataTemp","saTenantGetRoleMenus","initMenu","saTenantGetMenuList","resData","newTreeData","parseTreeData","calNewTreeData","checkedCount","sonCheckedCount","selectTree","node","saTenantGetMenuWindowButton","result","resDataInner","roleBtnData","tempQyBtnData","tData","item","checkChilds","tcount","es","checkedMenuTree","checked","getTreeCheckedDataLoop","cv","delFlag","ss","handleCheckAll","child","checkAllGroupChange","event","currentItem","deepClone","containFlag","okCount","i","curLevelData","curLevel","newLevelData","sonTreeData","dataTemp","_component_el_drawer","_component_el_card","_createElementVNode","_hoisted_1","_component_el_tree","_hoisted_2","_openBlock","_createElementBlock","_Fragment","_renderList","_hoisted_3","_toDisplayString","_component_el_checkbox","_component_el_checkbox_group","_createTextVNode","_component_el_empty","_hoisted_4","toFormData","toRoleData","tablePage","pageListOptions","searchForm","handlePageChange","currentPage","pageSize","query","saTenantListPage","add","edit","row","authorization","remove","ElMessageBox","saTenantDelete","onMounted","_component_YhIcon","_component_vxe_grid","_withCtx","_component_vxe_pager","TenantForm","TenantRoleManage"],"mappings":";;;;;;;;;;;AAwEA,UAAMA,IAAQC,GACRC,IAAOC,GAIPC,IAAUC,EAAI,EAAK,GACnBC,IAAUD,EAAA,GACVE,IAAOF,EAAoB,KAAK,GAChCG,IAAOC,EAA8B,EAAE,GAEvCC,IAA+B;AAAA,MACnC,MAAM,CAAC,EAAE,UAAU,IAAM,SAASC,EAAG,QAAQ,GAAG,SAAS,QAAQ;AAAA,MACjE,MAAM,CAAC,EAAE,UAAU,IAAM,SAASA,EAAG,QAAQ,GAAG,SAAS,QAAQ;AAAA,MACjE,UAAU,CAAC,EAAE,UAAU,IAAM,SAASA,EAAG,QAAQ,GAAG,SAAS,QAAQ;AAAA,MACrE,SAAS,CAAC,EAAE,UAAU,IAAM,SAASA,EAAG,QAAQ,GAAG,SAAS,QAAQ;AAAA,MACpE,UAAU,CAAC,EAAE,UAAU,IAAM,SAASA,EAAG,QAAQ,GAAG,SAAS,QAAQ;AAAA,MACrE,cAAc,CAAC,EAAE,UAAU,IAAM,SAASA,EAAG,QAAQ,GAAG,SAAS,OAAA,CAAQ;AAAA,IAAA,GAGrEC,IAAU,CAACC,MAAe;AAI9B,MAAAC,GAHc;AAAA,QACZ,YAAYD;AAAA,MAAA,CAEO,EAAE,KAAK,CAACE,MAAQ;AACnC,QAAKA,EAAI,KAAa,QACpB,OAAO,OAAOP,GAAOO,EAAI,KAAa,IAAI;AAAA,MAE9C,CAAC;AAAA,IACH,GAEMC,IAAK,YAAY;AACrB,UAAKV,EAAQ;AACb,YAAI;AACF,gBAAMA,EAAQ,MAAM,SAAA,GAChBC,EAAK,UAAU,QACjBU,GAAeT,CAAI,EAAE,KAAK,CAACO,MAAQ;AACjC,YAAKA,EAAI,KAAa,SACpBG,EAAU,QAAQP,EAAG,OAAO,CAAC,GAC7BP,EAAQ,QAAQ,IAChBF,EAAK,SAAS;AAAA,UAElB,CAAC,IACQK,EAAK,UAAU,UACxBY,GAAeX,CAAI,EAAE,KAAK,CAACO,MAAQ;AACjC,YAAKA,EAAI,KAAa,SACpBG,EAAU,QAAQP,EAAG,OAAO,CAAC,GAC7BP,EAAQ,QAAQ,IAChBF,EAAK,SAAS;AAAA,UAElB,CAAC;AAAA,QAEL,QAAQ;AAAA,QAER;AAAA,IACF,GAEMkB,IAAS,MAAM;AACnB,MAAAhB,EAAQ,QAAQ;AAAA,IAClB;AAEA,WAAAiB;AAAA,MACE,MAAMrB,EAAM;AAAA,MACZ,CAACsB,MAAQ;AACP,QAAAf,EAAK,QAAQe,EAAI,MACbA,EAAI,SAAS,SACf,OAAO,KAAKd,CAAI,EAAE,QAAQ,CAACe,MAAQ;AACjC,iBAAOf,EAAKe,CAAuB;AAAA,QACrC,CAAC,GACDnB,EAAQ,QAAQ,MACPkB,EAAI,SAAS,UACtBV,EAAQU,EAAI,EAAG,GACflB,EAAQ,QAAQ,MAEhBA,EAAQ,QAAQ;AAAA,MAEpB;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK;;kBAnJboB,EAyDYC,GAAA;AAAA,oBAzDQrB,EAAA;AAAA,wDAAAA,EAAO,QAAAsB;AAAA,QAAE,OAAM;AAAA,QAAS,OAAOC,EAAAhB,CAAA,EAAE,MAAA;AAAA,MAAA;QAqDxC,UACT,MAAkE;AAAA,UAAlEiB,EAAkEC,GAAA;AAAA,YAAvD,MAAK;AAAA,YAAW,gCAAOb,EAAA;AAAA,UAAE;uBAAI,MAAc;AAAA,kBAAXW,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAC7CiB,EAAuDC,GAAA;AAAA,YAA3C,gCAAOT,EAAA;AAAA,UAAM;uBAAI,MAAc;AAAA,kBAAXO,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;;mBAtDpC,MAmDU;AAAA,UAnDViB,EAmDUE,GAAA;AAAA,qBAnDG;AAAA,YAAJ,KAAIxB;AAAA,YAAW,OAAAI;AAAA,YAAe,OAAOF;AAAA,YAAM,eAAY;AAAA,UAAA;uBAC9D,MAMS;AAAA,cANToB,EAMSG,GAAA,MAAA;AAAA,2BALP,MAIS;AAAA,kBAJTH,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAc,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,sBAAA;mCACxC,MAAkF;AAAA,0BAAlFiB,EAAkFM,GAAA;AAAA,4BAA/D,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,aAAUkB;AAAA,4BAAE,UAAA;AAAA,4BAAU,aAAaC,EAAAhB,CAAA,EAAE,MAAA;AAAA,0BAAA;;;;;;;;;;cAInEiB,EAWSG,GAAA,MAAA;AAAA,2BAVP,MAIS;AAAA,kBAJTH,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAQ,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,sBAAA;mCAClC,MAAyC;AAAA,0BAAzCiB,EAAyCM,GAAA;AAAA,4BAAtB,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,OAAIkB;AAAA,0BAAA;;;;;;;kBAGhCE,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAQ,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,sBAAA;mCAClC,MAAyC;AAAA,0BAAzCiB,EAAyCM,GAAA;AAAA,4BAAtB,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,OAAIkB;AAAA,0BAAA;;;;;;;;;;cAIlCE,EAWSG,GAAA,MAAA;AAAA,2BAVP,MAIS;AAAA,kBAJTH,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAY,OAAON,EAAAhB,CAAA,EAAE,QAAA;AAAA,sBAAA;mCACtC,MAA6C;AAAA,0BAA7CiB,EAA6CM,GAAA;AAAA,4BAA1B,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,WAAQkB;AAAA,0BAAA;;;;;;;kBAGpCE,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAW,OAAON,EAAAhB,CAAA,EAAE,QAAA;AAAA,sBAAA;mCACrC,MAA4C;AAAA,0BAA5CiB,EAA4CM,GAAA;AAAA,4BAAzB,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,UAAOkB;AAAA,0BAAA;;;;;;;;;;cAIrCE,EAWSG,GAAA,MAAA;AAAA,2BAVP,MAIS;AAAA,kBAJTH,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAY,OAAON,EAAAhB,CAAA,EAAE,MAAA;AAAA,sBAAA;mCACtC,MAA6C;AAAA,0BAA7CiB,EAA6CM,GAAA;AAAA,4BAA1B,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,WAAQkB;AAAA,0BAAA;;;;;;;kBAGpCE,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFD,MAAK;AAAA,wBAAgB,OAAON,EAAAhB,CAAA,EAAE,QAAA;AAAA,sBAAA;mCAC1C,MAA2F;AAAA,0BAA3FiB,EAA2FM,GAAA;AAAA,4BAAxE,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,eAAYkB;AAAA,4BAAG,UAAUnB,EAAA,UAAI;AAAA,0BAAA;;;;;;;;;;cAI3DqB,EAMSG,GAAA,MAAA;AAAA,2BALP,MAIS;AAAA,kBAJTH,EAISI,GAAA,EAJA,MAAM,MAAE;AAAA,+BACf,MAEe;AAAA,sBAFfJ,EAEeK,GAAA;AAAA,wBAFA,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,sBAAA;mCACtB,MAA0E;AAAA,0BAA1EiB,EAA0EM,GAAA;AAAA,4BAAvD,YAAA1B,EAAK;AAAA,4BAAL,uBAAA2B,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAlB,EAAK,cAAWkB;AAAA,4BAAE,MAAK;AAAA,4BAAY,MAAM;AAAA,0BAAA;;;;;;;;;;;;;;;;;;;;;;;;;ACuBxE,UAAM1B,IAAQC,GACRC,IAAOC,GAIPiC,IAAa3B,EAA8B,EAAE,GAC7C4B,IAAoBhC,EAAI,EAAK,GAC7BiC,IAAiBjC,EAAc,EAAE,GACjCkC,IAAwBlC,EAA4B,EAAE,GACtDmC,IAAenC,EAAyB,EAAE,GAC1CoC,IAAmBpC,EAAoB,EAAE,GACzCqC,IAAoBrC,EAAI,EAAE,GAC1BsC,IAAsBtC,EAAyB,EAAE,GACjDuC,IAAkBvC,EAAc,EAAE,GAClCwC,IAAmBxC,EAAc,EAAE,GACnCyC,IAAWzC,EAAoB,EAAE,GACjC0C,IAAc1C,EAAI,EAAI,GACtBQ,IAAKR,EAAI,EAAE,GACXD,IAAUC,EAAI,EAAK,GACnB2C,IAAU3C,EAAA,GAEV4C,IAAkB,MAAM;AAC5B,MAAAN,EAAoB,QAAQ,CAAA,GAC5BJ,EAAsB,QAAQ,CAAA,GAC9BC,EAAa,QAAQ,CAAA,GACrBC,EAAiB,QAAQ,CAAA,GACzBH,EAAe,QAAQ,CAAA;AAAA,IACzB,GAEMY,IAAiB,MAAM;AAC3B,MAAAb,EAAkB,QAAQ;AAC1B,YAAMc,IAAcP,EAAgB,MAAM,KAAK,GAAG,GAC5CQ,IAA2C,CAAA;AACjD,aAAO,KAAKT,EAAoB,KAAK,EAAE,QAAQ,CAACpB,MAAQ;AACtD,QAAA6B,EAAe,OAAO7B,CAAG,IAAIoB,EAAoB,MAAMpB,CAAG;AAAA,MAC5D,CAAC,GACD8B,GAAiB;AAAA,QACf,QAAQjB,EAAW;AAAA,QACnB,KAAKe;AAAA,QACL,MAAM,KAAK,UAAUC,CAAc;AAAA,QACnC,YAAYhB,EAAW;AAAA,QACvB,SAASA,EAAW;AAAA,MAAA,CACrB,EAAE,KAAK,CAACrB,MAAQ;AACf,QAAAsB,EAAkB,QAAQ;AAC1B,cAAMiB,IAAOvC,EAAI;AACjB,QAAIuC,EAAK,UACPpC,EAAU,QAAQP,EAAG,MAAM,CAAC,GAC5BS,EAAA,KAEAF,EAAU,MAAMoC,EAAK,GAAG;AAAA,MAE5B,CAAC;AAAA,IACH,GAEMC,IAAsB,CAACC,MAAmB;AAC9C,MAAAC,GAA4B,EAAE,UAAUD,EAAA,CAAQ,EAAE,KAAK,CAACzC,MAAQ;AAC9D,YAAKA,EAAI,KAAa,MAAM;AAC1B,gBAAMuC,IAAQvC,EAAI,KAAa,MACzB2C,IAAsC,CAAA;AAC5C,UAAAJ,EAAK,QAAQ,CAACK,MAAW;AACvB,YAAKD,EAAeC,EAAE,WAAW,MAC/BD,EAAeC,EAAE,WAAW,IAAI,CAAA,IAElCD,EAAeC,EAAE,WAAW,EAAE,KAAKA,EAAE,iBAAiB;AAAA,UACxD,CAAC,GACDhB,EAAoB,QAAQe;AAAA,QAC9B;AAAA,MACF,CAAC;AAAA,IACH,GAEMtC,IAAS,MAAM;AACnB,MAAA6B,EAAA,GACA7C,EAAQ,QAAQ,IAChBF,EAAK,SAAS;AAAA,IAChB,GAEMU,KAAU,OAAOgD,MAAkB;AACvC,YAAMC,IAAQ;AAAA,QACZ,YAAYD;AAAA,MAAA;AAEd,UAAIN;AACJ,mBAAMxC,GAAgB+C,CAAK,EAAE,KAAK,CAAC9C,MAAQ;AACzC,QAAKA,EAAI,KAAa,SACpBuC,IAAQvC,EAAI,KAAa;AAAA,MAE7B,CAAC,GACMuC;AAAA,IACT,GAEMQ,KAAe,OAAON,MAAmB;AAC7C,YAAMO,IAAwC,CAAA;AAC9C,aAAAlB,EAAiB,QAAQ,CAAA,GACzBD,EAAgB,QAAQ,CAAA,GAExB,MAAMoB,GAAqB,EAAE,UAAUR,EAAA,CAAQ,EAAE,KAAK,CAACzC,MAAQ;AAC7D,cAAMuC,IAAOvC,EAAI;AACjB,QAAIuC,EAAK,UACPA,EAAK,KAAK,QAAQ,CAACK,MAAW;AAC5B,UAAIA,EAAE,cAAc,WAClBI,EAAiBJ,EAAE,UAAU,IAAIA,GACjCf,EAAgB,MAAM,KAAKe,EAAE,UAAU,KAEvCd,EAAiB,MAAM,KAAKc,EAAE,UAAU;AAAA,QAE5C,CAAC;AAAA,MAEL,CAAC,GACMI;AAAA,IACT,GAEME,KAAW,CAACF,MAA0C;AAC1D,MAAAG,GAAoB,CAAA,CAAE,EAAE,KAAK,CAACnD,MAAQ;AACpC,cAAMoD,IAAUpD,EAAI;AACpB,YAAIoD,EAAQ,MAAM;AAChB,gBAAMC,IAA8B,CAAA;AAEpC,UADaD,EAAQ,KAChB,QAAQ,CAACR,MAAW;AACvB,YAAAS,EAAY,KAAKC,GAAcV,CAAI,CAAC;AAAA,UACtC,CAAC,GACDW,GAAeF,GAAaL,CAAgB,GAC5CjB,EAAS,QAAQsB,GACjBrB,EAAY,QAAQ;AAAA,QACtB;AAAA,MACF,CAAC;AAAA,IACH,GAEMuB,KAAiB,CAACF,GAA6BL,MAAkD;AACrG,UAAIQ,IAAe;AACnB,aAAAH,EAAY,QAAQ,CAACT,MAAM;AAQzB,YAPAA,EAAE,SAAS,IAEPI,EAAiBJ,EAAE,QAAQ,MAC7BA,EAAE,UAAU,IACZY,MAGEZ,EAAE,YAAYA,EAAE,SAAS,SAAS,GAAG;AACvC,gBAAMa,IAAkBF,GAAeX,EAAE,UAAUI,CAAgB;AACnE,UAAIS,MAAoBb,EAAE,SAAS,UACjCA,EAAE,UAAU,IACZA,EAAE,aAAa,IACfA,EAAE,gBAAgB,MACTa,IAAkB,KAAKA,IAAkBb,EAAE,SAAS,UAC7DA,EAAE,gBAAgB,IAClBA,EAAE,UAAU,IACZA,EAAE,aAAa,OAEfA,EAAE,UAAU,IACZA,EAAE,gBAAgB;AAAA,QAEtB;AAAA,MACF,CAAC,GACMY;AAAA,IACT,GAEME,KAAa,CAACnB,GAA2BoB,MAAc;AAC3D,UAAIpB,GAAM;AAER,YADAZ,EAAkB,QAAQY,EAAK,eAAe,IAC1C,CAACZ,EAAkB,OAAO;AAC5B,UAAAD,EAAiB,QAAQ,CAAA,GACzBH,EAAe,QAAQK,EAAoB,MAAMD,EAAkB,KAAK,KAAK,CAAA;AAC7E;AAAA,QACF;AAEA,QAAAiC,GAA4B,EAAE,aAAajC,EAAkB,MAAA,CAAO,EAAE,KAAK,CAAC3B,MAAQ;AAClF,gBAAMoD,IAAUpD,EAAI,MACd,EAAE,QAAA6D,GAAQ,MAAMC,EAAA,IAAiBV;AACvC,cAAIS,KAAUC,GAAc;AAC1B,kBAAMC,IAA8B,CAAA,GAC9BC,IAAuC,CAAA;AAE7C,YAAAF,EAAa,QAAQ,CAACG,MAAe;AACnC,cAAIA,EAAM,SAAS,QACjBF,EAAY,KAAKE,CAAK,GACtBD,EAAcC,EAAM,EAAE,IAAI,CAAA,KAEtBD,EAAcC,EAAM,SAAS,KAC/BD,EAAcC,EAAM,SAAS,EAAE,KAAKA,CAAK;AAAA,YAG/C,CAAC,GAEDF,EAAY,QAAQ,CAACG,MAAS;AAC5B,cAAAA,EAAK,SAASF,EAAcE,EAAK,EAAE;AACnC,oBAAMC,IAAcvC,EAAoB,MAAMD,EAAkB,KAAK,KAAK,CAAA;AAC1E,kBAAIyC,IAAS;AACb,cAAAJ,EAAcE,EAAK,EAAE,EAAE,QAAQ,CAACG,MAAY;AAC1C,gBAAIF,EAAY,SAASE,EAAG,EAAE,KAC5BD;AAAA,cAEJ,CAAC,GACGA,MAAWJ,EAAcE,EAAK,EAAE,EAAE,UACpCA,EAAK,WAAW,IAChBA,EAAK,gBAAgB,MACZE,IAAS,KAClBF,EAAK,WAAW,IAChBA,EAAK,gBAAgB,OAErBA,EAAK,WAAW,IAChBA,EAAK,gBAAgB,KAEvBA,EAAK,cAAcC;AAAA,YACrB,CAAC,GAEDzC,EAAiB,QAAQqC,GACzBxC,EAAe,QAAQK,EAAoB,MAAMD,EAAkB,KAAK,KAAK,CAAA;AAAA,UAC/E;AAAA,QACF,CAAC;AAAA,MACH;AAAA,IACF,GAEM2C,KAAkB,CAAC/B,GAAoBgC,MAAqB;AAChE,MAAIhC,EAAK,aAAa,UACfgC,IAKH,OAAO/C,EAAsB,MAAMe,EAAK,QAAQ,IAJ3Cf,EAAsB,MAAMe,EAAK,QAAQ,MAC5Cf,EAAsB,MAAMe,EAAK,QAAQ,IAAI,OAMjDiC,GAAuBjC,GAAM,CAACgC,CAAO;AAAA,IAEzC,GAEMC,KAAyB,CAACC,GAAkBC,MAAqB;AACrE,MAAIA,KACGlD,EAAsB,MAAMiD,EAAG,QAAQ,MAC1CjD,EAAsB,MAAMiD,EAAG,QAAQ,IAAI,MAEzCA,EAAG,YAAYA,EAAG,SAAS,SAAS,KACtCA,EAAG,SAAS,QAAQ,CAACE,MAAO;AAC1B,QAAAH,GAAuBG,GAAID,CAAO;AAAA,MACpC,CAAC,KAGH,OAAOlD,EAAsB,MAAMiD,EAAG,QAAQ;AAAA,IAElD,GAEMG,KAAiB,CAACL,GAAkBL,GAAoB1D,MAAgB;AAC5E,UAAI2D,IAAwB,CAAA;AAC5B,MAAKD,EAAK,iBAKRC,IAAcD,EAAK,OAAO,IAAI,CAACW,MAAUA,EAAM,EAAE,GACjDX,EAAK,WAAW,IAChBA,EAAK,gBAAgB,IACrBA,EAAK,cAAcC,MAPnBD,EAAK,WAAW,IAChBA,EAAK,gBAAgB,IACrBA,EAAK,cAAcC,IAQrBvC,EAAoB,MAAMD,EAAkB,KAAK,IAAIwC,GACrDzC,EAAiB,MAAMlB,CAAG,IAAI0D;AAAA,IAChC,GAEMY,KAAsB,CAACC,GAAiBvE,MAAgB;AAE5D,YAAMwE,IADOC,GAAUvD,EAAiB,KAAK,EACpBlB,CAAG;AAC5B,UAAIuE,EAAM,SAAS,GAAG;AACpB,YAAIG,IAAc,GACdC,IAAU;AACd,iBAASC,IAAI,GAAGA,IAAIJ,EAAY,OAAO,QAAQI;AAC7C,UAAIL,EAAM,SAASC,EAAY,OAAOI,CAAC,EAAE,EAAE,KACzCD;AAGJ,QAAIA,MAAYH,EAAY,OAAO,SACjCE,IAAc,IAEdA,IAAc,GAEZA,MAAgB,KAClBF,EAAY,WAAW,IACvBA,EAAY,gBAAgBG,MAAY,KAC/BD,MAAgB,MACzBF,EAAY,WAAW,IACvBA,EAAY,gBAAgB;AAAA,MAEhC;AACE,QAAAA,EAAY,WAAW,IACvBA,EAAY,gBAAgB;AAE9B,MAAAA,EAAY,cAAcD,GAC1BrD,EAAiB,MAAMlB,CAAG,IAAIwE,GAC9BpD,EAAoB,MAAMD,EAAkB,KAAK,IAAIoD;AAAA,IACvD,GAEMzB,KAAgB,CAAC+B,GAAmBC,MAAmC;AAC3E,YAAMC,IAAoB,EAAE,MAAMF,EAAA;AAClC,aAAAE,EAAa,MAAMF,EAAa,UAChCE,EAAa,QAAQF,EAAa,MAE9BA,EAAa,WAAWA,EAAa,QAAQ,SAAS,KACxDA,EAAa,QAAQ,QAAQ,CAACG,MAAqB;AACjD,QAAKD,EAAa,aAChBA,EAAa,WAAW,CAAA,IAE1BA,EAAa,SAAS,KAAKjC,GAAckC,CAAyB,CAAC;AAAA,MACrE,CAAC,GACDD,EAAa,SAAS,MAEtBA,EAAa,SAAS,IAExB,OAAOF,EAAa,SACbE;AAAA,IACT;AAEA,WAAAjF;AAAA,MACE,MAAMrB,EAAM;AAAA,MACZ,OAAOsB,MAAQ;AACb,QAAAT,EAAG,QAAQS,EAAI;AACf,cAAMkF,IAAW,MAAM5F,GAAQU,EAAI,EAAE;AACrC,eAAO,OAAOc,GAAYoE,CAAQ,GAClCjD,EAAoBnB,EAAW,QAAQ;AACvC,cAAM2B,IAAmB,MAAMD,GAAa1B,EAAW,QAAQ;AAC/D,QAAA6B,GAASF,CAAgB,GACzB3D,EAAQ,QAAQ;AAAA,MAClB;AAAA,MACA,EAAE,MAAM,GAAA;AAAA,IAAK;;kBAvYboB,EAkDYiF,GAAA;AAAA,QAlDA,OAAO9E,EAAAhB,CAAA,EAAE,MAAA;AAAA,oBAAmBP,EAAA;AAAA,sDAAAA,EAAO,QAAAsB;AAAA,QAAG,OAAO;AAAA,QAAM,SAAON;AAAA,MAAA;mBACpE,MAgDS;AAAA,UAhDTQ,EAgDSG,GAAA,MAAA;AAAA,uBA/CP,MAeS;AAAA,cAfTH,EAeSI,GAAA,EAfA,MAAM,MAAE;AAAA,2BACf,MAaU;AAAA,kBAbVJ,EAaU8E,GAAA;AAAA,oBAbA,OAAO/E,EAAAhB,CAAA,EAAE,MAAA;AAAA,kBAAA;+BACjB,MAWM;AAAA,sBAXNgG,EAWM,OAXNC,IAWM;AAAA,2BAVJhF,EAS4CiF,GAAA;AAAA,mCARtC;AAAA,0BAAJ,KAAI7D;AAAA,0BACH,MAAMF,EAAA;AAAA,0BACN,OAAO,EAAA,OAAA,SAAA,UAAA,WAAA;AAAA,0BACR,iBAAA;AAAA,0BACA,YAAS;AAAA,0BACT,yBAAA;AAAA,0BAEC,iBAAgB2B;AAAA,0BAChB,eAAcY;AAAA,wBAAA;8BAFJtC,EAAA,KAAW;AAAA,wBAAA;;;;;;;;cAM9BnB,EA8BSI,GAAA,EA9BA,MAAM,MAAE;AAAA,2BACf,MA4BU;AAAA,kBA5BVJ,EA4BU8E,GAAA;AAAA,oBA5BA,OAAO/E,EAAAhB,CAAA,EAAE,MAAA;AAAA,kBAAA;+BACjB,MA0BM;AAAA,sBA1BNgG,EA0BM,OA1BNG,IA0BM;AAAA,yBAzBJC,EAAA,EAAA,GAAAC,EAiBUC,GAAA,MAAAC,GAjBqBzE,EAAA,OAAgB,CAA9BwC,GAAM1D,YAAvBC,EAiBUkF,GAAA;AAAA,0BAjBwC,KAAAnF;AAAA,0BAAU,OAAA,EAAA,cAAA,MAAA;AAAA,wBAAA;0BAC/C,UACT,MAAsD;AAAA,4BAAtDoF,EAAsD,QAAtDQ,IAAsDC,EAAnBnC,EAAK,IAAI,GAAA,CAAA;AAAA,4BAC5CrD,EAKcyF,GAAA;AAAA,8BAJH,YAAApC,EAAK;AAAA,8BAAL,uBAAA,CAAAvD,MAAAuD,EAAK,WAAQvD;AAAA,8BACrB,eAAeuD,EAAK;AAAA,8BACpB,iBAAQU,GAAejE,GAAQuD,GAAM1D,CAAG;AAAA,4BAAA;yCACzC,MAAc;AAAA,oCAAXI,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,8BAAA;;;;qCAGT,MAMoB;AAAA,4BANpBiB,EAMoB0F,GAAA;AAAA,8BALjB,eAAarC,EAAK;AAAA,8BAClB,wBAAqB3D,MAAQuE,GAAoBvE,GAAKC,CAAG;AAAA,4BAAA;yCAC7C,MAA4B;AAAA,iCAAzCwF,EAAA,EAAA,GAAAC,EAEcC,GAAA,MAAAC,GAFejC,EAAK,SAAdW,YAApBpE,EAEc6F,GAAA;AAAA,kCAF6B,KAAKzB,EAAM;AAAA,kCAAK,OAAOA,EAAM;AAAA,gCAAA;6CACtE,MAAgB;AAAA,oCAAb2B,EAAAH,EAAAxB,EAAM,IAAI,GAAA,CAAA;AAAA,kCAAA;;;;;;;;;wBAIHnD,EAAA,MAAiB,WAAM,UAAvCjB,EAAsFgG,GAAA;AAAA;0BAAtC,aAAa7F,EAAAhB,CAAA,EAAE,QAAA;AAAA,wBAAA;wBAC/DgG,EAKM,OALNc,IAKM;AAAA,0BAJJ7F,EAEYC,GAAA;AAAA,4BAFD,MAAK;AAAA,4BAAW,SAASQ,EAAA;AAAA,4BAAoB,SAAOa;AAAA,0BAAA;uCAC7D,MAAc;AAAA,kCAAXvB,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,4BAAA;;;0BAEPiB,EAAqDC,GAAA,EAAzC,SAAOT,KAAM;AAAA,uCAAE,MAAc;AAAA,kCAAXO,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,4BAAA;;;;;;;;;;;;;;;;;;;;;;ACiD5C,UAAM+G,IAAajH,EAAyB,EAAoB,GAC1DkH,IAAalH,EAAyB,EAAoB,GAC1DmH,IAAYnH,EAAoB;AAAA,MACpC,OAAO;AAAA,MACP,aAAa;AAAA,MACb,UAAU;AAAA,IAAA,CACX,GACKoH,IAAkBpH,EAAuB;AAAA,MAC7C,SAAS;AAAA,MACT,QAAQ;AAAA,MACR,cAAc;AAAA,MACd,OAAO;AAAA,MACP,SAAS;AAAA,QACP,EAAC,OAAO,cAAc,OAAOE,EAAG,MAAM,GAAG,OAAO,QAAQ,OAAO,IAAA;AAAA,QAC/D,EAAC,OAAO,QAAQ,OAAOA,EAAG,OAAO,EAAA;AAAA,QACjC,EAAC,OAAO,QAAQ,OAAOA,EAAG,OAAO,EAAA;AAAA,QACjC,EAAC,OAAO,UAAU,OAAO,MAAM,OAAO,SAAS,OAAO,KAAK,OAAO,EAAC,SAAS,WAAQ;AAAA,MAAC;AAAA,MAEvF,MAAM,CAAA;AAAA,IAAC,CACR,GACKmH,IAAarH,EAAqB,EAAE,GAGpCsH,IAAmB,CAAC,EAAC,aAAAC,GAAa,UAAAC,QAAuD;AAC7F,MAAAL,EAAU,cAAcI,GACxBJ,EAAU,WAAWK,GACrBC,EAAA;AAAA,IACF,GAEMA,IAAQ,MAAM;AAClB,YAAMrE,IAAQ;AAAA,QACZ,MAAM+D,EAAU;AAAA,QAChB,MAAMA,EAAU;AAAA,QAChB,MAAME,EAAW;AAAA,QACjB,MAAMA,EAAW;AAAA,MAAA;AAEnB,MAAAD,EAAgB,UAAU,IAC1BM,GAAiBtE,CAAK,EAAE,KAAK,CAAC9C,MAAQ;AACpC,cAAMoD,IAAUpD,EAAI;AACpB,QAAIoD,EAAQ,KAAK,YACf0D,EAAgB,OAAO1D,EAAQ,KAAK,SACpCyD,EAAU,QAAQzD,EAAQ,KAAK,OAC/ByD,EAAU,cAAczD,EAAQ,KAAK,UAEvC0D,EAAgB,UAAU;AAAA,MAC5B,CAAC;AAAA,IACH,GAEMO,IAAM,MAAM;AAChB,aAAO,OAAOV,GAAY,EAAC,MAAM,OAAwB;AAAA,IAC3D,GAEMW,IAAO,CAACC,MAAoB;AAChC,aAAO,OAAOZ,GAAY,EAAC,MAAM,QAAQ,IAAIY,EAAI,YAAW;AAAA,IAC9D,GAEMC,IAAgB,CAACD,MAAoB;AACzC,aAAO,OAAOX,GAAY,EAAC,IAAIW,EAAI,YAAW;AAAA,IAChD,GAEME,IAAS,CAACF,MAAoB;AAClC,MAAAG,GAAa,QAAQ,yBAAyB,OAAO;AAAA,QACnD,mBAAmB;AAAA,QACnB,kBAAkB;AAAA,QAClB,MAAM;AAAA,MAAA,CACP,EACE,KAAK,MAAM;AACV,cAAM5E,IAAQ;AAAA,UACZ,YAAYyE,EAAI;AAAA,QAAA;AAElB,QAAAI,GAAe7E,CAAK,EAAE,KAAK,CAAC9C,MAAQ;AAClC,gBAAMoD,IAAUpD,EAAI;AACpB,UAAIoD,EAAQ,UACVjD,EAAU,QAAQiD,EAAQ,GAAG,GAC7B+D,EAAA,KAEAhH,EAAU,MAAMiD,EAAQ,GAAG;AAAA,QAE/B,CAAC;AAAA,MACH,CAAC,EACA,MAAM,MAAM;AAAA,MAAC,CAAC;AAAA,IACnB;AAGA,WAAAwE,GAAU,MAAM;AACd,MAAAT,EAAA;AAAA,IACF,CAAC;;;QAnLDtG,EA8BUE,GAAA;AAAA,UA7BP,OAAOgG;AAAA,UACR,OAAM;AAAA,UACN,QAAA;AAAA,QAAA;qBACA,MAEe;AAAA,YAFflG,EAEeK,GAAA;AAAA,cAFA,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,YAAA;yBACtB,MAAsC;AAAA,gBAAtCiB,EAAsCM,GAAA;AAAA,kBAAnB,YAAA4F,EAAW;AAAA,kBAAX,uBAAA3F,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAoG,EAAW,OAAIpG;AAAA,gBAAA;;;;YAEpCE,EAEeK,GAAA;AAAA,cAFA,OAAON,EAAAhB,CAAA,EAAE,OAAA;AAAA,YAAA;yBACtB,MAAsC;AAAA,gBAAtCiB,EAAsCM,GAAA;AAAA,kBAAnB,YAAA4F,EAAW;AAAA,kBAAX,uBAAA3F,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAoG,EAAW,OAAIpG;AAAA,gBAAA;;;;YAEpCE,EASeK,GAAA,MAAA;AAAA,yBARb,MAOY;AAAA,gBAPZL,EAOYC,GAAA;AAAA,kBANV,MAAK;AAAA,kBACJ,gCAAOqG,EAAA;AAAA,gBAAK;6BACb,MAEyB;AAAA,oBAFzBtG,EAEyBgH,GAAA;AAAA,sBADvB,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAAkBrB,EAAA,QACtB5F,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;YAGTiB,EASeK,GAAA,MAAA;AAAA,yBARb,MAOY;AAAA,gBAPZL,EAOYC,GAAA;AAAA,kBANV,MAAK;AAAA,kBACJ,gCAAOuG,EAAA;AAAA,gBAAG;6BACX,MAEuB;AAAA,oBAFvBxG,EAEuBgH,GAAA;AAAA,sBADrB,MAAK;AAAA,sBACL,MAAK;AAAA,oBAAA;oBAAgBrB,EAAA,QACpB5F,EAAAhB,CAAA,EAAE,OAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;;;;QAIXiB,EA0CWiH,SA1COhB,CAAe,CAAA,GAAA;AAAA,UACpB,QAAMiB,EACf,CAOY,EARM,KAAAR,QAAG;AAAA,YACrB1G,EAOYC,GAAA;AAAA,cANV,MAAK;AAAA,cACL,MAAK;AAAA,cACL,MAAA;AAAA,cACA,OAAA,EAAA,gBAAA,MAAA;AAAA,cACC,SAAK,CAAAH,MAAE2G,EAAKC,CAAG;AAAA,YAAA;yBAChB,MAAc;AAAA,oBAAX3G,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEPiB,EAMYC,GAAA;AAAA,cALV,MAAK;AAAA,cACL,MAAK;AAAA,cACL,MAAA;AAAA,cACC,SAAK,CAAAH,MAAE6G,EAAcD,CAAG;AAAA,YAAA;yBACzB,MAAc;AAAA,oBAAX3G,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;YAEPiB,EAMYC,GAAA;AAAA,cALV,MAAK;AAAA,cACL,MAAK;AAAA,cACL,MAAA;AAAA,cACC,SAAK,CAAAH,MAAE8G,EAAOF,CAAG;AAAA,YAAA;yBAClB,MAAc;AAAA,oBAAX3G,EAAAhB,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;UAGE,SACT,MAc8C;AAAA,YAd9CiB,EAc8CmH,GAAA;AAAA,cAb3C,SAAS;AAAA;;;;;;;;;cAUF,gBAAcnB,EAAU;AAAA,cAAV,wBAAAzF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAkG,EAAU,cAAWlG;AAAA,cACnC,aAAWkG,EAAU;AAAA,cAAV,qBAAAzF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAAT,MAAAkG,EAAU,WAAQlG;AAAA,cACpC,OAAOkG,EAAU;AAAA,cACjB,cAAaG;AAAA,YAAA;;;;QAGpBnG,EAEkCoH,IAAA;AAAA,UAD/B,YAAYtB;AAAA,UACZ,kCAASQ,EAAA;AAAA,QAAK;QACjBtG,EAEwCqH,IAAA;AAAA,UADrC,YAAYtB;AAAA,UACZ,kCAASO,EAAA;AAAA,QAAK;;;;;"}