yh-pub 2.0.39 → 2.0.41
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.
- package/{AdminLogin-maQbEcvv.js → AdminLogin-BYr-u0at.js} +2 -2
- package/{AdminLogin-maQbEcvv.js.map → AdminLogin-BYr-u0at.js.map} +1 -1
- package/{Error-wo-2I2D5.js → Error-DTqkhCfS.js} +2 -2
- package/{Error-wo-2I2D5.js.map → Error-DTqkhCfS.js.map} +1 -1
- package/{Error401-A1i-M5OA.js → Error401-BBG55Cro.js} +3 -3
- package/{Error401-A1i-M5OA.js.map → Error401-BBG55Cro.js.map} +1 -1
- package/{Error404-LfvXWN2s.js → Error404-B8p7PJkf.js} +3 -3
- package/{Error404-LfvXWN2s.js.map → Error404-B8p7PJkf.js.map} +1 -1
- package/{Error500-CcKsxjg_.js → Error500-Wm2CzQ75.js} +3 -3
- package/{Error500-CcKsxjg_.js.map → Error500-Wm2CzQ75.js.map} +1 -1
- package/{HomeIndex-7BhD6AOT.js → HomeIndex-CQGpsXVX.js} +2 -2
- package/{HomeIndex-7BhD6AOT.js.map → HomeIndex-CQGpsXVX.js.map} +1 -1
- package/{IconExplorer-C-PDuDHE.js → IconExplorer-h9koLKIP.js} +2 -2
- package/{IconExplorer-C-PDuDHE.js.map → IconExplorer-h9koLKIP.js.map} +1 -1
- package/Index-yf5I3WYE.js +5 -0
- package/Index-yf5I3WYE.js.map +1 -0
- package/{MainLogin-D7cn6FeF.js → MainLogin-CbtrrwPZ.js} +2 -2
- package/{MainLogin-D7cn6FeF.js.map → MainLogin-CbtrrwPZ.js.map} +1 -1
- package/{MenuManage-DVJZ3cCr.js → MenuManage-90DsyraN.js} +2 -2
- package/{MenuManage-DVJZ3cCr.js.map → MenuManage-90DsyraN.js.map} +1 -1
- package/{OrgManage-BWUyL3Mn.js → OrgManage-CpLcowRT.js} +2 -2
- package/{OrgManage-BWUyL3Mn.js.map → OrgManage-CpLcowRT.js.map} +1 -1
- package/{RoleManage-BiByr1Tk.js → RoleManage-Dv2qCrna.js} +2 -2
- package/{RoleManage-BiByr1Tk.js.map → RoleManage-Dv2qCrna.js.map} +1 -1
- package/{SysConfig-DC2amkLF.js → SysConfig-B6JguMjv.js} +2 -2
- package/{SysConfig-DC2amkLF.js.map → SysConfig-B6JguMjv.js.map} +1 -1
- package/{TenantList-DVQ6YkBm.js → TenantList-D4PqBTVv.js} +2 -2
- package/{TenantList-DVQ6YkBm.js.map → TenantList-D4PqBTVv.js.map} +1 -1
- package/{ThemeConfig-0D7rcFl_.js → ThemeConfig-RodiZkNc.js} +2 -2
- package/{ThemeConfig-0D7rcFl_.js.map → ThemeConfig-RodiZkNc.js.map} +1 -1
- package/{ThemeDemo-Ctv2zOIc.js → ThemeDemo-hKi0fOQ_.js} +2 -2
- package/{ThemeDemo-Ctv2zOIc.js.map → ThemeDemo-hKi0fOQ_.js.map} +1 -1
- package/{index-BvsXyvTo.js → index-Do4p1wEn.js} +3927 -3858
- package/{index-BvsXyvTo.js.map → index-Do4p1wEn.js.map} +1 -1
- package/index.es.js +77 -74
- package/package.json +1 -1
- package/Index-DYPqTWdD.js +0 -5
- package/Index-DYPqTWdD.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"TenantList-DVQ6YkBm.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-D4PqBTVv.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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"}
|
|
@@ -2,7 +2,7 @@ import { defineComponent as ke, reactive as L, ref as A, resolveComponent as y,
|
|
|
2
2
|
import { storeToRefs as Ce } from "pinia";
|
|
3
3
|
import { useRouter as Ve } from "vue-router";
|
|
4
4
|
import { ElMessage as I } from "element-plus";
|
|
5
|
-
import { u as fe, p as ve, c as n, D as be, a as Te, t as xe, L as U, b as P, d as N, e as K, _ as Be } from "./index-
|
|
5
|
+
import { u as fe, p as ve, c as n, D as be, a as Te, t as xe, L as U, b as P, d as N, e as K, _ as Be } from "./index-Do4p1wEn.js";
|
|
6
6
|
import { useClientStore as Ue } from "yh-client";
|
|
7
7
|
import { S as we, T as Se } from "./themeVarLabels-CYr0ZzvW.js";
|
|
8
8
|
const Ee = { class: "theme-config-page" }, Le = { class: "config-toolbar" }, Ae = { class: "toolbar-title" }, Fe = { class: "config-section-title" }, $e = { class: "status-grid" }, De = ["title"], Re = { class: "status-pickers" }, We = { class: "picker-cap" }, He = { class: "status-pickers" }, Oe = { class: "picker-cap" }, je = { class: "config-section-title" }, ze = { class: "layout-card" }, Me = { class: "layout-line" }, Ie = { class: "layout-line wrap" }, Pe = { class: "pair" }, Ne = { class: "picker-cap" }, Ke = { class: "pair" }, Ge = { class: "picker-cap" }, Xe = { class: "layout-line wrap" }, Ye = { class: "pair" }, Ze = { class: "picker-cap" }, qe = { class: "pair" }, Je = { class: "picker-cap" }, Qe = { class: "layout-line wrap" }, el = { class: "pair" }, ll = { class: "picker-cap" }, ol = { class: "pair" }, tl = { class: "picker-cap" }, al = { class: "config-section-title" }, sl = { class: "adv-head-row" }, rl = ["title"], nl = { class: "label-zh" }, dl = { class: "label-var" }, il = { class: "adv-control" }, ul = { class: "adv-value" }, pl = { class: "adv-control" }, cl = { class: "adv-value" }, gl = { class: "config-section-title" }, ml = { class: "preview-card" }, hl = { class: "preview-row" }, kl = { class: "preview-row" }, _l = /* @__PURE__ */ ke({
|
|
@@ -567,4 +567,4 @@ ${s.join(`,
|
|
|
567
567
|
export {
|
|
568
568
|
Bl as default
|
|
569
569
|
};
|
|
570
|
-
//# sourceMappingURL=ThemeConfig-
|
|
570
|
+
//# sourceMappingURL=ThemeConfig-RodiZkNc.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ThemeConfig-0D7rcFl_.js","sources":["../layout/components/ThemeConfig.vue"],"sourcesContent":["<template>\n <div class=\"theme-config-page\">\n <!-- 操作栏 -->\n <div class=\"config-toolbar\">\n <span class=\"toolbar-title\">{{ ct('主题配置') }}</span>\n <el-radio-group\n v-model=\"modeValue\"\n @change=\"(val: any) => themeStore.setMode(val)\">\n <el-radio-button value=\"light\">{{ ct('亮色') }}</el-radio-button>\n <el-radio-button value=\"dark\">{{ ct('暗色') }}</el-radio-button>\n <el-radio-button value=\"auto\">{{ ct('跟随系统') }}</el-radio-button>\n </el-radio-group>\n <div class=\"flex-grow\"></div>\n <el-button @click=\"goDemo\">{{ ct('前往主题演示') }}</el-button>\n <el-button @click=\"resetDefault\">\n {{ ct('恢复默认') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"copyConfigCode\">\n {{ ct('复制配置代码') }}\n </el-button>\n </div>\n\n <!-- 常用配置 -->\n <h3 class=\"config-section-title\">{{ ct('状态色(自动派生变体)') }}</h3>\n <div class=\"status-grid\">\n <div\n v-for=\"name in STATUS_NAMES\"\n :key=\"name\"\n class=\"status-row\">\n <span\n class=\"status-chip\"\n :style=\"{backgroundColor: statusForm[name]?.light}\"></span>\n <span\n class=\"status-name\"\n :title=\"`elColor${cap(name)}`\">\n {{ STATUS_ZH[name] || name }} {{ name }}\n </span>\n <div class=\"status-pickers\">\n <el-color-picker\n v-model=\"statusForm[name].light\"\n @change=\"applyTheme\" />\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n </div>\n <div class=\"status-pickers\">\n <el-color-picker\n v-model=\"statusForm[name].dark\"\n @change=\"applyTheme\" />\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n </div>\n </div>\n </div>\n\n <h3 class=\"config-section-title\">{{ ct('布局变量') }}</h3>\n <div class=\"layout-card\">\n <div class=\"layout-line\">\n <div class=\"line-label\">\n <span class=\"label-zh\">头部高度</span>\n <span class=\"label-var\">--layout-header-height</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.headerHeight\"\n :min=\"40\"\n :max=\"120\"\n :step=\"4\"\n @change=\"applyTheme\" />\n <div class=\"line-label\">\n <span class=\"label-zh\">侧边栏宽度</span>\n <span class=\"label-var\">--layout-aside-width</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.asideWidth\"\n :min=\"160\"\n :max=\"400\"\n :step=\"10\"\n @change=\"applyTheme\" />\n <div class=\"line-label\">\n <span class=\"label-zh\">收起宽度</span>\n <span class=\"label-var\">--layout-aside-collapsed-width</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.asideCollapsedWidth\"\n :min=\"40\"\n :max=\"120\"\n :step=\"4\"\n @change=\"applyTheme\" />\n <span class=\"unit\">px</span>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">头部背景(渐变)</span>\n <span class=\"label-var\">--layout-header-background</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.gradFrom\"\n @change=\"applyTheme\" />\n <span class=\"arrow\">→</span>\n <el-color-picker\n v-model=\"layoutForm.light.gradTo\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.gradFrom\"\n @change=\"applyTheme\" />\n <span class=\"arrow\">→</span>\n <el-color-picker\n v-model=\"layoutForm.dark.gradTo\"\n @change=\"applyTheme\" />\n </div>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">侧边栏背景</span>\n <span class=\"label-var\">--layout-aside-background</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.asideBg\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.asideBg\"\n @change=\"applyTheme\" />\n </div>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">布局边框色</span>\n <span class=\"label-var\">--layout-border-color</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.borderColor\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.borderColor\"\n @change=\"applyTheme\" />\n </div>\n </div>\n </div>\n\n <!-- 高级配置 -->\n <h3 class=\"config-section-title\">{{ ct('高级配置(全部变量)') }}</h3>\n <el-collapse v-model=\"openedPanels\">\n <el-collapse-item\n v-for=\"group in ADV_GROUPS\"\n :key=\"group.key\"\n :name=\"group.key\"\n :title=\"`${group.title}(${group.items.length})`\">\n <div class=\"adv-head-row\">\n <span>{{ ct('变量') }}</span>\n <span>{{ ct('亮色值') }}</span>\n <span>{{ ct('暗色值') }}</span>\n </div>\n <div\n v-for=\"item in group.items\"\n :key=\"item.key\"\n class=\"adv-row\">\n <span\n class=\"adv-label\"\n :title=\"toCssVar(item.key)\">\n <span class=\"label-zh\">{{ item.label }}</span>\n <span class=\"label-var\">{{ toCssVar(item.key) }}</span>\n </span>\n <div class=\"adv-control\">\n <el-color-picker\n v-if=\"isColorValue(advLight[item.key])\"\n v-model=\"advLight[item.key]\"\n show-alpha\n @change=\"applyTheme\" />\n <el-input\n v-else\n v-model=\"advLight[item.key]\"\n size=\"small\"\n @change=\"applyTheme\" />\n <span class=\"adv-value\">{{ getVarValue(item.key, 'light') }}</span>\n </div>\n <div class=\"adv-control\">\n <el-color-picker\n v-if=\"isColorValue(advDark[item.key])\"\n v-model=\"advDark[item.key]\"\n show-alpha\n @change=\"applyTheme\" />\n <el-input\n v-else\n v-model=\"advDark[item.key]\"\n size=\"small\"\n @change=\"applyTheme\" />\n <span class=\"adv-value\">{{ getVarValue(item.key, 'dark') }}</span>\n </div>\n </div>\n </el-collapse-item>\n </el-collapse>\n\n <!-- 实时预览 -->\n <h3 class=\"config-section-title\">{{ ct('实时预览') }}</h3>\n <div class=\"preview-card\">\n <div class=\"preview-row\">\n <el-button type=\"primary\">Primary</el-button>\n <el-button type=\"success\">Success</el-button>\n <el-button type=\"warning\">Warning</el-button>\n <el-button type=\"danger\">Danger</el-button>\n <el-tag type=\"primary\">Tag</el-tag>\n <el-switch v-model=\"previewSwitch\" />\n <el-checkbox\n v-model=\"previewCheck\">{{ ct('复选框') }}</el-checkbox>\n </div>\n <div class=\"preview-row\">\n <el-input\n v-model=\"previewInput\"\n :placeholder=\"ct('输入框')\"\n style=\"width: 200px\" />\n <el-progress\n :percentage=\"66\"\n style=\"width: 180px\" />\n </div>\n <el-alert\n :title=\"ct('布局头部与侧边栏即为实时预览效果,修改立即生效。')\"\n type=\"info\"\n show-icon />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {reactive, ref} from 'vue';\n import {storeToRefs} from 'pinia';\n import {useRouter} from 'vue-router';\n import {ElMessage} from 'element-plus';\n import {pinia} from '../../store';\n import {useClientStore} from 'yh-client';\n import {useThemeStore, toCssVarName} from '../../store/theme';\n import {\n DEFAULT_EL_VARS,\n DARK_EL_VARS,\n LAYOUT_VARS,\n DARK_LAYOUT_VARS,\n DEFAULT_VXE_VARS,\n DARK_VXE_VARS,\n } from '../../theme/vars';\n import {THEME_VAR_LABELS, STATUS_ZH} from './themeVarLabels';\n import {ct} from '../../utils/i18nHelp';\n\n const themeStore = useThemeStore();\n const router = useRouter();\n const clientStore = useClientStore(pinia);\n\n const {mode: modeValue} = storeToRefs(themeStore);\n\n function goDemo() {\n router.push(clientStore.isAdmin ? '/admin/theme-demo' : '/theme-demo');\n }\n\n // ---------- 工具 ----------\n // camelCase 变量 key 转 CSS 变量名,与 theme.ts updateCSSVars 保持一致\n function toCssVar(key: string): string {\n return `--${toCssVarName(key)}`;\n }\n\n function getVarValue(varKey: string, modeType: 'light' | 'dark'): string {\n const source = modeType === 'light' ? themeStore.lightVars : themeStore.darkVars;\n return (source as Record<string, string>)[varKey] ?? '-';\n }\n\n // 值是否为可被 el-color-picker 解析的颜色\n function isColorValue(value?: string): boolean {\n return /^(#[0-9a-f]{3,8}|rgba?\\(|hsla?\\()/i.test((value || '').trim());\n }\n\n function hexToRgb(hex: string): [number, number, number] {\n let h = hex.trim().replace('#', '');\n if (h.length === 3 || h.length === 4) {\n h = h\n .slice(0, 3)\n .split('')\n .map((c) => c + c)\n .join('');\n }\n const num = parseInt(h.slice(0, 6), 16);\n return [(num >> 16) & 255, (num >> 8) & 255, num & 255];\n }\n\n // 与 Element Plus 官方混色规则一致:ratio 为向 end 色混合的比例\n function mixColor(base: number[], end: number[], ratio: number): [number, number, number] {\n return [\n Math.round(base[0] * (1 - ratio) + end[0] * ratio),\n Math.round(base[1] * (1 - ratio) + end[1] * ratio),\n Math.round(base[2] * (1 - ratio) + end[2] * ratio),\n ];\n }\n\n function rgbToStr(rgb: [number, number, number]): string {\n return `#${rgb.map((c) => c.toString(16).padStart(2, '0')).join('')}`;\n }\n\n // 仅当值相对默认集发生变化时才写入补丁,保证导出的代码最小化\n function putIfChanged(\n patch: Record<string, string>,\n defaults: Record<string, string>,\n key: string,\n value: string\n ): void {\n const norm = (s?: string) => (s || '').trim().toLowerCase().replace(/\\s+/g, '');\n if (norm(value) !== norm(defaults[key])) {\n patch[key] = value;\n }\n }\n\n // ---------- 表单模型 ----------\n const STATUS_NAMES = ['primary', 'success', 'warning', 'danger', 'info'];\n const cap = (s: string) => s[0].toUpperCase() + s.slice(1);\n\n const statusForm = reactive<Record<string, {light: string; dark: string}>>({});\n\n const layoutForm = reactive({\n headerHeight: 60,\n asideWidth: 240,\n asideCollapsedWidth: 60,\n light: {gradFrom: '#0051C1', gradTo: '#3E93FE', asideBg: '#21304C', borderColor: '#f0f0f0'},\n dark: {gradFrom: '#1a1a1a', gradTo: '#2d2d2d', asideBg: '#212223', borderColor: '#363637'},\n });\n\n // 解析头部渐变字符串(亮度模式固定格式 linear-gradient(90deg, c1 0%, c2 100%))\n function parseGradient(bg?: string): [string, string] {\n const m = /linear-gradient\\(90deg,\\s*(\\S+)\\s+0%,\\s*(\\S+)\\s+100%\\)/.exec(bg || '');\n return m ? [m[1], m[2]] : ['#0051C1', '#3E93FE'];\n }\n\n // 高级区表单:键为驼峰变量 key,值为原始字符串\n const advLight = reactive<Record<string, string>>({});\n const advDark = reactive<Record<string, string>>({});\n\n interface AdvItem {\n key: string;\n label: string;\n }\n interface AdvGroup {\n key: string;\n title: string;\n items: AdvItem[];\n }\n\n function advItems(keys: string[]): AdvItem[] {\n return keys.map((key) => ({\n key,\n // 中文标签优先,缺失时回退为变量短名\n label: THEME_VAR_LABELS[key] || toCssVar(key).replace(/^--(el-|vxe-ui-)/, ''),\n }));\n }\n\n const ADV_GROUPS: AdvGroup[] = [\n {\n key: 'text',\n title: ct('文字颜色'),\n items: advItems([\n 'elTextColorPrimary',\n 'elTextColorRegular',\n 'elTextColorSecondary',\n 'elTextColorPlaceholder',\n 'elTextColorDisabled',\n ]),\n },\n {\n key: 'border',\n title: ct('边框颜色'),\n items: advItems([\n 'elBorderColor',\n 'elBorderColorLight',\n 'elBorderColorLighter',\n 'elBorderColorExtraLight',\n 'elBorderColorDark',\n 'elBorderColorDarker',\n ]),\n },\n {\n key: 'fill',\n title: ct('填充颜色'),\n items: advItems([\n 'elFillColor',\n 'elFillColorLight',\n 'elFillColorLighter',\n 'elFillColorExtraLight',\n 'elFillColorDark',\n 'elFillColorDarker',\n 'elFillColorBlank',\n ]),\n },\n {\n key: 'bg',\n title: ct('背景与遮罩'),\n items: advItems([\n 'elBgColor',\n 'elBgColorPage',\n 'elBgColorOverlay',\n 'elOverlayColor',\n 'elOverlayColorLight',\n 'elOverlayColorLighter',\n 'elMaskColor',\n 'elMaskColorExtraLight',\n ]),\n },\n {\n key: 'vxe',\n title: 'VXE',\n items: advItems(Object.keys({...DEFAULT_VXE_VARS, ...DARK_VXE_VARS})),\n },\n ];\n\n const openedPanels = ref<Array<string>>([]);\n\n // 从当前主题变量初始化表单回显\n function initForm(): void {\n const lightSource = themeStore.lightVars as Record<string, string>;\n const darkSource = themeStore.darkVars as Record<string, string>;\n\n STATUS_NAMES.forEach((name) => {\n const key = `elColor${cap(name)}`;\n statusForm[name] = {\n light: lightSource[key] || '#409eff',\n dark: darkSource[key] || '#409eff',\n };\n });\n\n layoutForm.headerHeight = parseInt(lightSource.layoutHeaderHeight, 10) || 60;\n layoutForm.asideWidth = parseInt(lightSource.layoutAsideWidth, 10) || 240;\n layoutForm.asideCollapsedWidth = parseInt(lightSource.layoutAsideCollapsedWidth, 10) || 60;\n\n const [lFrom, lTo] = parseGradient(lightSource.layoutHeaderBackground);\n layoutForm.light.gradFrom = lFrom;\n layoutForm.light.gradTo = lTo;\n const [dFrom, dTo] = parseGradient(darkSource.layoutHeaderBackground);\n layoutForm.dark.gradFrom = dFrom;\n layoutForm.dark.gradTo = dTo;\n layoutForm.light.asideBg = lightSource.layoutAsideBackground || '#21304C';\n layoutForm.light.borderColor = lightSource.layoutBorderColor || '#f0f0f0';\n layoutForm.dark.asideBg = darkSource.layoutAsideBackground || '#212223';\n layoutForm.dark.borderColor = darkSource.layoutBorderColor || '#363637';\n\n ADV_GROUPS.forEach((group) => {\n group.items.forEach((item) => {\n advLight[item.key] = lightSource[item.key] ?? '';\n advDark[item.key] = darkSource[item.key] ?? '';\n });\n });\n }\n\n initForm();\n\n // ---------- 应用与导出 ----------\n // 收集所有差异项(含状态色派生变体),亮暗两套\n function collectChanges(): {light: Record<string, string>; dark: Record<string, string>} {\n const light: Record<string, string> = {};\n const dark: Record<string, string> = {};\n\n // 布局尺寸(亮暗共用)\n putIfChanged(light, LAYOUT_VARS, 'layoutHeaderHeight', `${layoutForm.headerHeight}px`);\n putIfChanged(light, LAYOUT_VARS, 'layoutAsideWidth', `${layoutForm.asideWidth}px`);\n putIfChanged(\n light,\n LAYOUT_VARS,\n 'layoutAsideCollapsedWidth',\n `${layoutForm.asideCollapsedWidth}px`\n );\n\n // 布局颜色\n const composeGrad = (from: string, to: string) =>\n `linear-gradient(90deg, ${from} 0%, ${to} 100%)`;\n putIfChanged(\n light,\n LAYOUT_VARS,\n 'layoutHeaderBackground',\n composeGrad(layoutForm.light.gradFrom, layoutForm.light.gradTo)\n );\n putIfChanged(\n dark,\n DARK_LAYOUT_VARS,\n 'layoutHeaderBackground',\n composeGrad(layoutForm.dark.gradFrom, layoutForm.dark.gradTo)\n );\n putIfChanged(light, LAYOUT_VARS, 'layoutAsideBackground', layoutForm.light.asideBg);\n putIfChanged(light, LAYOUT_VARS, 'layoutBorderColor', layoutForm.light.borderColor);\n putIfChanged(dark, DARK_LAYOUT_VARS, 'layoutAsideBackground', layoutForm.dark.asideBg);\n putIfChanged(dark, DARK_LAYOUT_VARS, 'layoutBorderColor', layoutForm.dark.borderColor);\n\n // 状态色:按官方混色规则派生全部变体(基准色未改动时整组跳过,\n // 避免暗色默认值 rgb 浮点格式与派生 hex 格式不一致产生的假差异)\n STATUS_NAMES.forEach((name) => {\n const baseKey = `elColor${cap(name)}`;\n const norm = (s?: string) => (s || '').trim().toLowerCase();\n if (norm(statusForm[name].light) !== norm(DEFAULT_EL_VARS[baseKey])) {\n deriveStatus(light, DEFAULT_EL_VARS, name, statusForm[name].light, [255, 255, 255]);\n }\n if (norm(statusForm[name].dark) !== norm(DARK_EL_VARS[baseKey])) {\n deriveStatus(dark, DARK_EL_VARS, name, statusForm[name].dark, [20, 20, 20]);\n }\n });\n\n // 高级区灰度 / VXE 变量\n ADV_GROUPS.forEach((group) => {\n group.items.forEach((item) => {\n putIfChanged(light, DEFAULT_EL_VARS, item.key, advLight[item.key]);\n putIfChanged(dark, DARK_EL_VARS, item.key, advDark[item.key]);\n });\n });\n\n return {light, dark};\n }\n\n // 派生单个状态色的全部变量并按需写入补丁\n function deriveStatus(\n patch: Record<string, string>,\n defaults: Record<string, string>,\n name: string,\n baseHex: string,\n endPoint: number[]\n ): void {\n if (!isColorValue(baseHex) || !baseHex.startsWith('#')) return;\n\n const pascal = cap(name);\n putIfChanged(patch, defaults, `elColor${pascal}`, baseHex.toLowerCase());\n\n const base = hexToRgb(baseHex);\n\n const variants: Array<[string, number]> = [\n ['Light3', 0.3],\n ['Light5', 0.5],\n ['Light7', 0.7],\n ['Light8', 0.8],\n ['Light9', 0.9],\n ['Dark2', 0.2],\n ];\n variants.forEach(([suffix, ratio]) => {\n putIfChanged(\n patch,\n defaults,\n `elColor${pascal}${suffix}`,\n rgbToStr(mixColor(base, endPoint, ratio))\n );\n });\n\n putIfChanged(patch, defaults, `elColor${pascal}Rgb`, base.join(', '));\n }\n\n // 任一表单项变化:全量重算差异并应用到主题(仅内存,不持久化)\n function applyTheme(): void {\n const {light, dark} = collectChanges();\n themeStore.extend({light, dark});\n }\n\n function resetDefault(): void {\n themeStore.setTheme('default');\n themeStore.extend({light: {}, dark: {}});\n initForm();\n ElMessage.success(ct('已恢复默认主题'));\n }\n\n function objLiteral(obj: Record<string, string>): string {\n return Object.entries(obj)\n .map(([k, v]) => ` ${k}: '${v}',`)\n .join('\\n');\n }\n\n async function copyConfigCode(): Promise<void> {\n const {light, dark} = collectChanges();\n\n const parts: string[] = [];\n if (Object.keys(light).length > 0) {\n parts.push(` light: {\\n${objLiteral(light)}\\n }`);\n }\n if (Object.keys(dark).length > 0) {\n parts.push(` dark: {\\n${objLiteral(dark)}\\n }`);\n }\n const code =\n parts.length > 0\n ? `// 在应用入口调用(如 main.ts),仅包含相对默认值的改动\\nimport {useThemeStore} from 'yh-pub';\\n\\nuseThemeStore().extend({\\n${parts.join(',\\n')}\\n});`\n : `// 当前配置与默认主题一致,无需覆盖`;\n\n try {\n await navigator.clipboard.writeText(code);\n ElMessage.success(ct('配置代码已复制到剪贴板'));\n } catch {\n // fallback:textarea 选区复制\n const textarea = document.createElement('textarea');\n textarea.value = code;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n ElMessage.success(ct('配置代码已复制到剪贴板'));\n }\n }\n\n // 预览区数据\n const previewSwitch = ref(true);\n const previewCheck = ref(true);\n const previewInput = ref('');\n</script>\n\n<style lang=\"scss\" scoped>\n .theme-config-page {\n max-width: 1280px;\n\n .flex-grow {\n flex: 1;\n }\n\n .config-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n\n .toolbar-title {\n font-size: 16px;\n font-weight: 600;\n margin-right: 8px;\n }\n }\n\n .config-section-title {\n margin: 24px 0 12px;\n padding-left: 8px;\n border-left: 3px solid var(--el-color-primary);\n font-size: 15px;\n line-height: 1.3;\n }\n\n .status-grid {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n .status-row {\n display: flex;\n align-items: center;\n gap: 12px;\n\n .status-chip {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n border: 1px solid var(--el-border-color-lighter);\n }\n\n .status-name {\n flex: 0 0 120px;\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .status-pickers {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .picker-cap {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n }\n\n .layout-card {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n .layout-line {\n display: flex;\n align-items: center;\n gap: 12px;\n\n &.wrap {\n flex-wrap: wrap;\n }\n\n .line-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n .label-zh {\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .label-var {\n font-size: 11px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n word-break: break-all;\n }\n }\n\n .pair {\n display: flex;\n align-items: center;\n gap: 8px;\n\n .arrow {\n color: var(--el-text-color-placeholder);\n }\n\n .picker-cap {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n\n .unit {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n }\n\n .adv-head-row,\n .adv-row {\n display: grid;\n grid-template-columns: 260px minmax(220px, 1fr) minmax(220px, 1fr);\n gap: 12px;\n align-items: center;\n }\n\n .adv-head-row {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n padding: 4px 0 8px;\n border-bottom: 1px dashed var(--el-border-color-lighter);\n margin-bottom: 8px;\n }\n\n .adv-row {\n padding: 4px 0;\n\n .adv-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: hidden;\n\n .label-zh {\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .label-var {\n font-size: 10px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n word-break: break-all;\n line-height: 1.3;\n }\n }\n\n .adv-control {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n\n .el-input {\n max-width: 240px;\n }\n\n .adv-value {\n font-size: 11px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n }\n\n .preview-card {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n\n .preview-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n }\n</style>\n"],"names":["themeStore","useThemeStore","router","useRouter","clientStore","useClientStore","pinia","modeValue","storeToRefs","goDemo","toCssVar","key","toCssVarName","getVarValue","varKey","modeType","isColorValue","value","hexToRgb","hex","h","c","num","mixColor","base","end","ratio","rgbToStr","rgb","putIfChanged","patch","defaults","norm","s","STATUS_NAMES","cap","statusForm","reactive","layoutForm","parseGradient","bg","m","advLight","advDark","advItems","keys","THEME_VAR_LABELS","ADV_GROUPS","ct","DEFAULT_VXE_VARS","DARK_VXE_VARS","openedPanels","ref","initForm","lightSource","darkSource","name","lFrom","lTo","dFrom","dTo","group","item","collectChanges","light","dark","LAYOUT_VARS","composeGrad","from","to","DARK_LAYOUT_VARS","baseKey","DEFAULT_EL_VARS","deriveStatus","DARK_EL_VARS","baseHex","endPoint","pascal","suffix","applyTheme","resetDefault","ElMessage","objLiteral","obj","k","v","copyConfigCode","parts","code","textarea","previewSwitch","previewCheck","previewInput","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_unref","_createVNode","_component_el_radio_group","$event","val","_component_el_radio_button","_component_el_button","_hoisted_4","_hoisted_5","_Fragment","_renderList","_normalizeStyle","_a","STATUS_ZH","_hoisted_6","_hoisted_7","_component_el_color_picker","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_el_input_number","_cache","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_collapse","_component_el_collapse_item","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_createBlock","_component_el_input","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_component_el_tag","_component_el_switch","_component_el_checkbox","_hoisted_41","_component_el_progress","_component_el_alert"],"mappings":";;;;;;;;;;AA+PE,UAAMA,IAAaC,GAAA,GACbC,KAASC,GAAA,GACTC,KAAcC,GAAeC,EAAK,GAElC,EAAC,MAAMC,MAAaC,GAAYR,CAAU;AAEhD,aAASS,KAAS;AAChB,MAAAP,GAAO,KAAKE,GAAY,UAAU,sBAAsB,aAAa;AAAA,IACvE;AAIA,aAASM,EAASC,GAAqB;AACrC,aAAO,KAAKC,GAAaD,CAAG,CAAC;AAAA,IAC/B;AAEA,aAASE,EAAYC,GAAgBC,GAAoC;AAEvE,cADeA,MAAa,UAAUf,EAAW,YAAYA,EAAW,UAC9Bc,CAAM,KAAK;AAAA,IACvD;AAGA,aAASE,EAAaC,GAAyB;AAC7C,aAAO,qCAAqC,MAAMA,KAAS,IAAI,MAAM;AAAA,IACvE;AAEA,aAASC,GAASC,GAAuC;AACvD,UAAIC,IAAID,EAAI,KAAA,EAAO,QAAQ,KAAK,EAAE;AAClC,OAAIC,EAAE,WAAW,KAAKA,EAAE,WAAW,OACjCA,IAAIA,EACD,MAAM,GAAG,CAAC,EACV,MAAM,EAAE,EACR,IAAI,CAACC,MAAMA,IAAIA,CAAC,EAChB,KAAK,EAAE;AAEZ,YAAMC,IAAM,SAASF,EAAE,MAAM,GAAG,CAAC,GAAG,EAAE;AACtC,aAAO,CAAEE,KAAO,KAAM,KAAMA,KAAO,IAAK,KAAKA,IAAM,GAAG;AAAA,IACxD;AAGA,aAASC,GAASC,GAAgBC,GAAeC,GAAyC;AACxF,aAAO;AAAA,QACL,KAAK,MAAMF,EAAK,CAAC,KAAK,IAAIE,KAASD,EAAI,CAAC,IAAIC,CAAK;AAAA,QACjD,KAAK,MAAMF,EAAK,CAAC,KAAK,IAAIE,KAASD,EAAI,CAAC,IAAIC,CAAK;AAAA,QACjD,KAAK,MAAMF,EAAK,CAAC,KAAK,IAAIE,KAASD,EAAI,CAAC,IAAIC,CAAK;AAAA,MAAA;AAAA,IAErD;AAEA,aAASC,GAASC,GAAuC;AACvD,aAAO,IAAIA,EAAI,IAAI,CAACP,MAAMA,EAAE,SAAS,EAAE,EAAE,SAAS,GAAG,GAAG,CAAC,EAAE,KAAK,EAAE,CAAC;AAAA,IACrE;AAGA,aAASQ,EACPC,GACAC,GACApB,GACAM,GACM;AACN,YAAMe,IAAO,CAACC,OAAgBA,KAAK,IAAI,KAAA,EAAO,YAAA,EAAc,QAAQ,QAAQ,EAAE;AAC9E,MAAID,EAAKf,CAAK,MAAMe,EAAKD,EAASpB,CAAG,CAAC,MACpCmB,EAAMnB,CAAG,IAAIM;AAAA,IAEjB;AAGA,UAAMiB,IAAe,CAAC,WAAW,WAAW,WAAW,UAAU,MAAM,GACjEC,IAAM,CAACF,MAAcA,EAAE,CAAC,EAAE,gBAAgBA,EAAE,MAAM,CAAC,GAEnDG,IAAaC,EAAwD,EAAE,GAEvEC,IAAaD,EAAS;AAAA,MAC1B,cAAc;AAAA,MACd,YAAY;AAAA,MACZ,qBAAqB;AAAA,MACrB,OAAO,EAAC,UAAU,WAAW,QAAQ,WAAW,SAAS,WAAW,aAAa,UAAA;AAAA,MACjF,MAAM,EAAC,UAAU,WAAW,QAAQ,WAAW,SAAS,WAAW,aAAa,UAAA;AAAA,IAAS,CAC1F;AAGD,aAASE,EAAcC,GAA+B;AACpD,YAAMC,IAAI,yDAAyD,KAAKD,KAAM,EAAE;AAChF,aAAOC,IAAI,CAACA,EAAE,CAAC,GAAGA,EAAE,CAAC,CAAC,IAAI,CAAC,WAAW,SAAS;AAAA,IACjD;AAGA,UAAMC,IAAWL,EAAiC,EAAE,GAC9CM,IAAUN,EAAiC,EAAE;AAYnD,aAASO,EAASC,GAA2B;AAC3C,aAAOA,EAAK,IAAI,CAAClC,OAAS;AAAA,QACxB,KAAAA;AAAA;AAAA,QAEA,OAAOmC,GAAiBnC,CAAG,KAAKD,EAASC,CAAG,EAAE,QAAQ,oBAAoB,EAAE;AAAA,MAAA,EAC5E;AAAA,IACJ;AAEA,UAAMoC,IAAyB;AAAA,MAC7B;AAAA,QACE,KAAK;AAAA,QACL,OAAOC,EAAG,MAAM;AAAA,QAChB,OAAOJ,EAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,MAEH;AAAA,QACE,KAAK;AAAA,QACL,OAAOI,EAAG,MAAM;AAAA,QAChB,OAAOJ,EAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,MAEH;AAAA,QACE,KAAK;AAAA,QACL,OAAOI,EAAG,MAAM;AAAA,QAChB,OAAOJ,EAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,MAEH;AAAA,QACE,KAAK;AAAA,QACL,OAAOI,EAAG,OAAO;AAAA,QACjB,OAAOJ,EAAS;AAAA,UACd;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,UACA;AAAA,QAAA,CACD;AAAA,MAAA;AAAA,MAEH;AAAA,QACE,KAAK;AAAA,QACL,OAAO;AAAA,QACP,OAAOA,EAAS,OAAO,KAAK,EAAC,GAAGK,IAAkB,GAAGC,IAAc,CAAC;AAAA,MAAA;AAAA,IACtE,GAGIC,IAAeC,EAAmB,EAAE;AAG1C,aAASC,IAAiB;AACxB,YAAMC,IAActD,EAAW,WACzBuD,IAAavD,EAAW;AAE9B,MAAAkC,EAAa,QAAQ,CAACsB,MAAS;AAC7B,cAAM7C,IAAM,UAAUwB,EAAIqB,CAAI,CAAC;AAC/B,QAAApB,EAAWoB,CAAI,IAAI;AAAA,UACjB,OAAOF,EAAY3C,CAAG,KAAK;AAAA,UAC3B,MAAM4C,EAAW5C,CAAG,KAAK;AAAA,QAAA;AAAA,MAE7B,CAAC,GAED2B,EAAW,eAAe,SAASgB,EAAY,oBAAoB,EAAE,KAAK,IAC1EhB,EAAW,aAAa,SAASgB,EAAY,kBAAkB,EAAE,KAAK,KACtEhB,EAAW,sBAAsB,SAASgB,EAAY,2BAA2B,EAAE,KAAK;AAExF,YAAM,CAACG,GAAOC,CAAG,IAAInB,EAAce,EAAY,sBAAsB;AACrE,MAAAhB,EAAW,MAAM,WAAWmB,GAC5BnB,EAAW,MAAM,SAASoB;AAC1B,YAAM,CAACC,GAAOC,CAAG,IAAIrB,EAAcgB,EAAW,sBAAsB;AACpE,MAAAjB,EAAW,KAAK,WAAWqB,GAC3BrB,EAAW,KAAK,SAASsB,GACzBtB,EAAW,MAAM,UAAUgB,EAAY,yBAAyB,WAChEhB,EAAW,MAAM,cAAcgB,EAAY,qBAAqB,WAChEhB,EAAW,KAAK,UAAUiB,EAAW,yBAAyB,WAC9DjB,EAAW,KAAK,cAAciB,EAAW,qBAAqB,WAE9DR,EAAW,QAAQ,CAACc,MAAU;AAC5B,QAAAA,EAAM,MAAM,QAAQ,CAACC,MAAS;AAC5B,UAAApB,EAASoB,EAAK,GAAG,IAAIR,EAAYQ,EAAK,GAAG,KAAK,IAC9CnB,EAAQmB,EAAK,GAAG,IAAIP,EAAWO,EAAK,GAAG,KAAK;AAAA,QAC9C,CAAC;AAAA,MACH,CAAC;AAAA,IACH;AAEA,IAAAT,EAAA;AAIA,aAASU,IAAgF;AACvF,YAAMC,IAAgC,CAAA,GAChCC,IAA+B,CAAA;AAGrC,MAAApC,EAAamC,GAAOE,GAAa,sBAAsB,GAAG5B,EAAW,YAAY,IAAI,GACrFT,EAAamC,GAAOE,GAAa,oBAAoB,GAAG5B,EAAW,UAAU,IAAI,GACjFT;AAAA,QACEmC;AAAA,QACAE;AAAA,QACA;AAAA,QACA,GAAG5B,EAAW,mBAAmB;AAAA,MAAA;AAInC,YAAM6B,IAAc,CAACC,GAAcC,MACjC,0BAA0BD,CAAI,QAAQC,CAAE;AAC1C,aAAAxC;AAAA,QACEmC;AAAA,QACAE;AAAA,QACA;AAAA,QACAC,EAAY7B,EAAW,MAAM,UAAUA,EAAW,MAAM,MAAM;AAAA,MAAA,GAEhET;AAAA,QACEoC;AAAA,QACAK;AAAA,QACA;AAAA,QACAH,EAAY7B,EAAW,KAAK,UAAUA,EAAW,KAAK,MAAM;AAAA,MAAA,GAE9DT,EAAamC,GAAOE,GAAa,yBAAyB5B,EAAW,MAAM,OAAO,GAClFT,EAAamC,GAAOE,GAAa,qBAAqB5B,EAAW,MAAM,WAAW,GAClFT,EAAaoC,GAAMK,GAAkB,yBAAyBhC,EAAW,KAAK,OAAO,GACrFT,EAAaoC,GAAMK,GAAkB,qBAAqBhC,EAAW,KAAK,WAAW,GAIrFJ,EAAa,QAAQ,CAACsB,MAAS;AAC7B,cAAMe,IAAU,UAAUpC,EAAIqB,CAAI,CAAC,IAC7BxB,IAAO,CAACC,OAAgBA,KAAK,IAAI,KAAA,EAAO,YAAA;AAC9C,QAAID,EAAKI,EAAWoB,CAAI,EAAE,KAAK,MAAMxB,EAAKwC,EAAgBD,CAAO,CAAC,KAChEE,EAAaT,GAAOQ,GAAiBhB,GAAMpB,EAAWoB,CAAI,EAAE,OAAO,CAAC,KAAK,KAAK,GAAG,CAAC,GAEhFxB,EAAKI,EAAWoB,CAAI,EAAE,IAAI,MAAMxB,EAAK0C,EAAaH,CAAO,CAAC,KAC5DE,EAAaR,GAAMS,GAAclB,GAAMpB,EAAWoB,CAAI,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;AAAA,MAE9E,CAAC,GAGDT,EAAW,QAAQ,CAACc,MAAU;AAC5B,QAAAA,EAAM,MAAM,QAAQ,CAACC,MAAS;AAC5B,UAAAjC,EAAamC,GAAOQ,GAAiBV,EAAK,KAAKpB,EAASoB,EAAK,GAAG,CAAC,GACjEjC,EAAaoC,GAAMS,GAAcZ,EAAK,KAAKnB,EAAQmB,EAAK,GAAG,CAAC;AAAA,QAC9D,CAAC;AAAA,MACH,CAAC,GAEM,EAAC,OAAAE,GAAO,MAAAC,EAAA;AAAA,IACjB;AAGA,aAASQ,EACP3C,GACAC,GACAyB,GACAmB,GACAC,GACM;AACN,UAAI,CAAC5D,EAAa2D,CAAO,KAAK,CAACA,EAAQ,WAAW,GAAG,EAAG;AAExD,YAAME,IAAS1C,EAAIqB,CAAI;AACvB,MAAA3B,EAAaC,GAAOC,GAAU,UAAU8C,CAAM,IAAIF,EAAQ,aAAa;AAEvE,YAAMnD,IAAON,GAASyD,CAAO;AAU7B,MAR0C;AAAA,QACxC,CAAC,UAAU,GAAG;AAAA,QACd,CAAC,UAAU,GAAG;AAAA,QACd,CAAC,UAAU,GAAG;AAAA,QACd,CAAC,UAAU,GAAG;AAAA,QACd,CAAC,UAAU,GAAG;AAAA,QACd,CAAC,SAAS,GAAG;AAAA,MAAA,EAEN,QAAQ,CAAC,CAACG,GAAQpD,CAAK,MAAM;AACpC,QAAAG;AAAA,UACEC;AAAA,UACAC;AAAA,UACA,UAAU8C,CAAM,GAAGC,CAAM;AAAA,UACzBnD,GAASJ,GAASC,GAAMoD,GAAUlD,CAAK,CAAC;AAAA,QAAA;AAAA,MAE5C,CAAC,GAEDG,EAAaC,GAAOC,GAAU,UAAU8C,CAAM,OAAOrD,EAAK,KAAK,IAAI,CAAC;AAAA,IACtE;AAGA,aAASuD,IAAmB;AAC1B,YAAM,EAAC,OAAAf,GAAO,MAAAC,EAAA,IAAQF,EAAA;AACtB,MAAA/D,EAAW,OAAO,EAAC,OAAAgE,GAAO,MAAAC,EAAA,CAAK;AAAA,IACjC;AAEA,aAASe,KAAqB;AAC5B,MAAAhF,EAAW,SAAS,SAAS,GAC7BA,EAAW,OAAO,EAAC,OAAO,CAAA,GAAI,MAAM,CAAA,GAAG,GACvCqD,EAAA,GACA4B,EAAU,QAAQjC,EAAG,SAAS,CAAC;AAAA,IACjC;AAEA,aAASkC,EAAWC,GAAqC;AACvD,aAAO,OAAO,QAAQA,CAAG,EACtB,IAAI,CAAC,CAACC,GAAGC,CAAC,MAAM,OAAOD,CAAC,MAAMC,CAAC,IAAI,EACnC,KAAK;AAAA,CAAI;AAAA,IACd;AAEA,mBAAeC,KAAgC;AAC7C,YAAM,EAAC,OAAAtB,GAAO,MAAAC,EAAA,IAAQF,EAAA,GAEhBwB,IAAkB,CAAA;AACxB,MAAI,OAAO,KAAKvB,CAAK,EAAE,SAAS,KAC9BuB,EAAM,KAAK;AAAA,EAAeL,EAAWlB,CAAK,CAAC;AAAA,IAAO,GAEhD,OAAO,KAAKC,CAAI,EAAE,SAAS,KAC7BsB,EAAM,KAAK;AAAA,EAAcL,EAAWjB,CAAI,CAAC;AAAA,IAAO;AAElD,YAAMuB,IACJD,EAAM,SAAS,IACX;AAAA;AAAA;AAAA;AAAA,EAAyGA,EAAM,KAAK;AAAA,CAAK,CAAC;AAAA,OAC1H;AAEN,UAAI;AACF,cAAM,UAAU,UAAU,UAAUC,CAAI,GACxCP,EAAU,QAAQjC,EAAG,aAAa,CAAC;AAAA,MACrC,QAAQ;AAEN,cAAMyC,IAAW,SAAS,cAAc,UAAU;AAClD,QAAAA,EAAS,QAAQD,GACjBC,EAAS,MAAM,WAAW,SAC1BA,EAAS,MAAM,UAAU,KACzB,SAAS,KAAK,YAAYA,CAAQ,GAClCA,EAAS,OAAA,GACT,SAAS,YAAY,MAAM,GAC3B,SAAS,KAAK,YAAYA,CAAQ,GAClCR,EAAU,QAAQjC,EAAG,aAAa,CAAC;AAAA,MACrC;AAAA,IACF;AAGA,UAAM0C,KAAgBtC,EAAI,EAAI,GACxBuC,KAAevC,EAAI,EAAI,GACvBwC,KAAexC,EAAI,EAAE;;;AAhmB3B,aAAAyC,EAAA,GAAAC,EAwOM,OAxONC,IAwOM;AAAA,QAtOJC,EAmBM,OAnBNC,IAmBM;AAAA,UAlBJD,EAAmD,QAAnDE,IAAmDC,EAApBC,EAAApD,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,UACjCqD,EAMiBC,GAAA;AAAA,wBALNF,EAAA7F,CAAA;AAAA,kEAAAA,EAAS,QAAAgG,IAAA;AAAA,YACjB,2BAASC,MAAaJ,KAAW,QAAQI,CAAG;AAAA,UAAA;uBAC7C,MAA+D;AAAA,cAA/DH,EAA+DI,GAAA,EAA9C,OAAM,WAAO;AAAA,2BAAC,MAAc;AAAA,sBAAXL,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cACpCqD,EAA8DI,GAAA,EAA7C,OAAM,UAAM;AAAA,2BAAC,MAAc;AAAA,sBAAXL,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;cACnCqD,EAAgEI,GAAA,EAA/C,OAAM,UAAM;AAAA,2BAAC,MAAgB;AAAA,sBAAbL,EAAApD,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;;;;;;4BAErCgD,EAA6B,OAAA,EAAxB,OAAM,YAAA,GAAW,MAAA,EAAA;AAAA,UACtBK,EAAyDK,GAAA,EAA7C,SAAOjG,MAAM;AAAA,uBAAE,MAAkB;AAAA,kBAAf2F,EAAApD,CAAA,EAAE,QAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAChCqD,EAEYK,GAAA,EAFA,SAAO1B,MAAY;AAAA,uBAC7B,MAAgB;AAAA,kBAAboB,EAAApD,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;UAEPqD,EAIYK,GAAA;AAAA,YAHV,MAAK;AAAA,YACJ,SAAOpB;AAAA,UAAA;uBACR,MAAkB;AAAA,kBAAfc,EAAApD,CAAA,EAAE,QAAA,CAAA,GAAA,CAAA;AAAA,YAAA;;;;QAKTgD,EAA6D,MAA7DW,IAA6DR,EAAzBC,EAAApD,CAAA,EAAE,aAAA,CAAA,GAAA,CAAA;AAAA,QACtCgD,EA0BM,OA1BNY,IA0BM;AAAA,gBAzBJd,EAwBMe,GAAA,MAAAC,EAvBW5E,GAAY,CAApBsB,MAAI;;mBADbwC,EAwBM,OAAA;AAAA,cAtBH,KAAKxC;AAAA,cACN,OAAM;AAAA,YAAA;cACNwC,EAE6D,QAAA;AAAA,gBAD3D,OAAM;AAAA,gBACL,OAAKe,GAAA,EAAA,kBAAoBC,IAAA5E,EAAWoB,CAAI,MAAf,gBAAAwD,EAAkB,OAAK;AAAA,cAAA;cACnDhB,EAIO,QAAA;AAAA,gBAHL,OAAM;AAAA,gBACL,OAAK,UAAY7D,EAAIqB,CAAI,CAAA;AAAA,cAAA,GACvB2C,EAAAC,EAAAa,EAAA,EAAUzD,CAAI,KAAKA,CAAI,IAAG,QAAIA,CAAI,GAAA,GAAA0D,EAAA;AAAA,cAEvClB,EAKM,OALNmB,IAKM;AAAA,gBAJJd,EAEyBe,GAAA;AAAA,8BADdhF,EAAWoB,CAAI,EAAE;AAAA,gDAAjBpB,EAAWoB,CAAI,EAAE,QAAK+C;AAAA,kBAC9B,UAAQxB;AAAA,gBAAA;gBACXiB,EAA8C,QAA9CqB,IAA8ClB,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;cAEhCgD,EAKM,OALNsB,IAKM;AAAA,gBAJJjB,EAEyBe,GAAA;AAAA,8BADdhF,EAAWoB,CAAI,EAAE;AAAA,gDAAjBpB,EAAWoB,CAAI,EAAE,OAAI+C;AAAA,kBAC7B,UAAQxB;AAAA,gBAAA;gBACXiB,EAA8C,QAA9CuB,IAA8CpB,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;QAKpCgD,EAAsD,MAAtDwB,IAAsDrB,EAAlBC,EAAApD,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,QACtCgD,EAgGM,OAhGNyB,IAgGM;AAAA,UA/FJzB,EAgCM,OAhCN0B,IAgCM;AAAA,8BA/BJ1B,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAkC,QAAA,EAA5B,OAAM,WAAA,GAAW,MAAI;AAAA,cAC3BA,EAAqD,QAAA,EAA/C,OAAM,YAAA,GAAY,wBAAsB;AAAA,YAAA;YAEhDK,EAKyBsB,GAAA;AAAA,cAJd,YAAArF,EAAW;AAAA,cAAX,uBAAAsF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAArB,MAAAjE,EAAW,eAAYiE;AAAA,cAC/B,KAAK;AAAA,cACL,KAAK;AAAA,cACL,MAAM;AAAA,cACN,UAAQxB;AAAA,YAAA;8BACXiB,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAmC,QAAA,EAA7B,OAAM,WAAA,GAAW,OAAK;AAAA,cAC5BA,EAAmD,QAAA,EAA7C,OAAM,YAAA,GAAY,sBAAoB;AAAA,YAAA;YAE9CK,EAKyBsB,GAAA;AAAA,cAJd,YAAArF,EAAW;AAAA,cAAX,uBAAAsF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAArB,MAAAjE,EAAW,aAAUiE;AAAA,cAC7B,KAAK;AAAA,cACL,KAAK;AAAA,cACL,MAAM;AAAA,cACN,UAAQxB;AAAA,YAAA;8BACXiB,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAkC,QAAA,EAA5B,OAAM,WAAA,GAAW,MAAI;AAAA,cAC3BA,EAA6D,QAAA,EAAvD,OAAM,YAAA,GAAY,gCAA8B;AAAA,YAAA;YAExDK,EAKyBsB,GAAA;AAAA,cAJd,YAAArF,EAAW;AAAA,cAAX,uBAAAsF,EAAA,CAAA,MAAAA,EAAA,CAAA,IAAA,CAAArB,MAAAjE,EAAW,sBAAmBiE;AAAA,cACtC,KAAK;AAAA,cACL,KAAK;AAAA,cACL,MAAM;AAAA,cACN,UAAQxB;AAAA,YAAA;YACX6C,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA5B,EAA4B,QAAA,EAAtB,OAAM,UAAO,MAAE,EAAA;AAAA,UAAA;UAEvBA,EAyBM,OAzBN6B,IAyBM;AAAA,8BAxBJ7B,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAsC,QAAA,EAAhC,OAAM,WAAA,GAAW,UAAQ;AAAA,cAC/BA,EAAyD,QAAA,EAAnD,OAAM,YAAA,GAAY,4BAA0B;AAAA,YAAA;YAEpDA,EASM,OATN8B,IASM;AAAA,cARJ9B,EAA8C,QAA9C+B,IAA8C5B,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,MAAM;AAAA,8DAAjBA,EAAW,MAAM,WAAQiE;AAAA,gBACjC,UAAQxB;AAAA,cAAA;cACX6C,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA5B,EAA4B,QAAA,EAAtB,OAAM,QAAA,GAAQ,KAAC,EAAA;AAAA,cACrBK,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,MAAM;AAAA,8DAAjBA,EAAW,MAAM,SAAMiE;AAAA,gBAC/B,UAAQxB;AAAA,cAAA;;YAEbiB,EASM,OATNgC,IASM;AAAA,cARJhC,EAA8C,QAA9CiC,IAA8C9B,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,KAAK;AAAA,8DAAhBA,EAAW,KAAK,WAAQiE;AAAA,gBAChC,UAAQxB;AAAA,cAAA;cACX6C,EAAA,EAAA,MAAAA,EAAA,EAAA,IAAA5B,EAA4B,QAAA,EAAtB,OAAM,QAAA,GAAQ,KAAC,EAAA;AAAA,cACrBK,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,KAAK;AAAA,8DAAhBA,EAAW,KAAK,SAAMiE;AAAA,gBAC9B,UAAQxB;AAAA,cAAA;;;UAGfiB,EAiBM,OAjBNkC,IAiBM;AAAA,8BAhBJlC,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAmC,QAAA,EAA7B,OAAM,WAAA,GAAW,OAAK;AAAA,cAC5BA,EAAwD,QAAA,EAAlD,OAAM,YAAA,GAAY,2BAAyB;AAAA,YAAA;YAEnDA,EAKM,OALNmC,IAKM;AAAA,cAJJnC,EAA8C,QAA9CoC,IAA8CjC,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,MAAM;AAAA,8DAAjBA,EAAW,MAAM,UAAOiE;AAAA,gBAChC,UAAQxB;AAAA,cAAA;;YAEbiB,EAKM,OALNqC,IAKM;AAAA,cAJJrC,EAA8C,QAA9CsC,IAA8CnC,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,KAAK;AAAA,gEAAhBA,EAAW,KAAK,UAAOiE;AAAA,gBAC/B,UAAQxB;AAAA,cAAA;;;UAGfiB,EAiBM,OAjBNuC,IAiBM;AAAA,8BAhBJvC,EAGM,OAAA,EAHD,OAAM,gBAAY;AAAA,cACrBA,EAAmC,QAAA,EAA7B,OAAM,WAAA,GAAW,OAAK;AAAA,cAC5BA,EAAoD,QAAA,EAA9C,OAAM,YAAA,GAAY,uBAAqB;AAAA,YAAA;YAE/CA,EAKM,OALNwC,IAKM;AAAA,cAJJxC,EAA8C,QAA9CyC,IAA8CtC,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,MAAM;AAAA,gEAAjBA,EAAW,MAAM,cAAWiE;AAAA,gBACpC,UAAQxB;AAAA,cAAA;;YAEbiB,EAKM,OALN0C,IAKM;AAAA,cAJJ1C,EAA8C,QAA9C2C,IAA8CxC,EAAlBC,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,cAC9BqD,EAEyBe,GAAA;AAAA,4BADd9E,EAAW,KAAK;AAAA,gEAAhBA,EAAW,KAAK,cAAWiE;AAAA,gBACnC,UAAQxB;AAAA,cAAA;;;;QAMjBiB,EAA4D,MAA5D4C,IAA4DzC,EAAxBC,EAAApD,CAAA,EAAE,YAAA,CAAA,GAAA,CAAA;AAAA,QACtCqD,EAiDcwC,GAAA;AAAA,sBAjDQ1F,EAAA;AAAA,0DAAAA,EAAY,QAAAoD;AAAA,QAAA;qBAE9B,MAA2B;AAAA,kBAD7BT,EA+CmBe,GAAA,MAAAC,EA9CD/D,GAAU,CAAnBc,MADTwC,EA+CmByC,GAAA;AAAA,cA7ChB,KAAKjF,EAAM;AAAA,cACX,MAAMA,EAAM;AAAA,cACZ,OAAK,GAAKA,EAAM,KAAK,IAAIA,EAAM,MAAM,MAAM;AAAA,YAAA;yBAC5C,MAIM;AAAA,gBAJNmC,EAIM,OAJN+C,IAIM;AAAA,kBAHJ/C,EAA2B,gBAAlBI,EAAApD,CAAA,EAAE,IAAA,CAAA,GAAA,CAAA;AAAA,kBACXgD,EAA4B,gBAAnBI,EAAApD,CAAA,EAAE,KAAA,CAAA,GAAA,CAAA;AAAA,kBACXgD,EAA4B,gBAAnBI,EAAApD,CAAA,EAAE,KAAA,CAAA,GAAA,CAAA;AAAA,gBAAA;iBAEb6C,EAAA,EAAA,GAAAC,EAoCMe,GAAA,MAAAC,EAnCWjD,EAAM,QAAdC,YADTgC,EAoCM,OAAA;AAAA,kBAlCH,KAAKhC,EAAK;AAAA,kBACX,OAAM;AAAA,gBAAA;kBACNkC,EAKO,QAAA;AAAA,oBAJL,OAAM;AAAA,oBACL,OAAOtF,EAASoD,EAAK,GAAG;AAAA,kBAAA;oBACzBkC,EAA8C,QAA9CgD,IAA8C7C,EAApBrC,EAAK,KAAK,GAAA,CAAA;AAAA,oBACpCkC,EAAuD,QAAvDiD,IAAuD9C,EAA5BzF,EAASoD,EAAK,GAAG,CAAA,GAAA,CAAA;AAAA,kBAAA;kBAE9CkC,EAYM,OAZNkD,IAYM;AAAA,oBAVIlI,EAAa0B,EAASoB,EAAK,GAAG,CAAA,UADtCqF,EAIyB/B,GAAA;AAAA;kCAFd1E,EAASoB,EAAK,GAAG;AAAA,oDAAjBpB,EAASoB,EAAK,GAAG,IAAAyC;AAAA,sBAC1B,cAAA;AAAA,sBACC,UAAQxB;AAAA,oBAAA,4DACXoE,EAIyBC,GAAA;AAAA;kCAFd1G,EAASoB,EAAK,GAAG;AAAA,oDAAjBpB,EAASoB,EAAK,GAAG,IAAAyC;AAAA,sBAC1B,MAAK;AAAA,sBACJ,UAAQxB;AAAA,oBAAA;oBACXiB,EAAmE,QAAnEqD,IAAmElD,EAAxCtF,EAAYiD,EAAK,KAAG,OAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;kBAEjDkC,EAYM,OAZNsD,IAYM;AAAA,oBAVItI,EAAa2B,EAAQmB,EAAK,GAAG,CAAA,UADrCqF,EAIyB/B,GAAA;AAAA;kCAFdzE,EAAQmB,EAAK,GAAG;AAAA,oDAAhBnB,EAAQmB,EAAK,GAAG,IAAAyC;AAAA,sBACzB,cAAA;AAAA,sBACC,UAAQxB;AAAA,oBAAA,4DACXoE,EAIyBC,GAAA;AAAA;kCAFdzG,EAAQmB,EAAK,GAAG;AAAA,oDAAhBnB,EAAQmB,EAAK,GAAG,IAAAyC;AAAA,sBACzB,MAAK;AAAA,sBACJ,UAAQxB;AAAA,oBAAA;oBACXiB,EAAkE,QAAlEuD,IAAkEpD,EAAvCtF,EAAYiD,EAAK,KAAG,MAAA,CAAA,GAAA,CAAA;AAAA,kBAAA;;;;;;;;QAOvDkC,EAAsD,MAAtDwD,IAAsDrD,EAAlBC,EAAApD,CAAA,EAAE,MAAA,CAAA,GAAA,CAAA;AAAA,QACtCgD,EAwBM,OAxBNyD,IAwBM;AAAA,UAvBJzD,EASM,OATN0D,IASM;AAAA,YARJrD,EAA6CK,GAAA,EAAlC,MAAK,aAAS;AAAA,yBAAC,MAAO,CAAA,KAAA,EAAA,MAAAkB,EAAA,EAAA,IAAA;AAAA,kBAAP,WAAO,EAAA;AAAA,cAAA;;;YACjCvB,EAA6CK,GAAA,EAAlC,MAAK,aAAS;AAAA,yBAAC,MAAO,CAAA,KAAA,EAAA,MAAAkB,EAAA,EAAA,IAAA;AAAA,kBAAP,WAAO,EAAA;AAAA,cAAA;;;YACjCvB,EAA6CK,GAAA,EAAlC,MAAK,aAAS;AAAA,yBAAC,MAAO,CAAA,KAAA,EAAA,MAAAkB,EAAA,EAAA,IAAA;AAAA,kBAAP,WAAO,EAAA;AAAA,cAAA;;;YACjCvB,EAA2CK,GAAA,EAAhC,MAAK,YAAQ;AAAA,yBAAC,MAAM,CAAA,KAAA,EAAA,MAAAkB,EAAA,EAAA,IAAA;AAAA,kBAAN,UAAM,EAAA;AAAA,cAAA;;;YAC/BvB,EAAmCsD,IAAA,EAA3B,MAAK,aAAS;AAAA,yBAAC,MAAG,CAAA,KAAA,EAAA,MAAA/B,EAAA,EAAA,IAAA;AAAA,kBAAH,OAAG,EAAA;AAAA,cAAA;;;YAC1BvB,EAAqCuD,IAAA;AAAA,0BAAjBlE,GAAA;AAAA,8DAAAA,GAAa,QAAAa;AAAA,YAAA;YACjCF,EACsDwD,IAAA;AAAA,0BAA3ClE,GAAA;AAAA,8DAAAA,GAAY,QAAAY;AAAA,YAAA;yBAAE,MAAe;AAAA,oBAAZH,EAAApD,CAAA,EAAE,KAAA,CAAA,GAAA,CAAA;AAAA,cAAA;;;;UAEhCgD,EAQM,OARN8D,IAQM;AAAA,YAPJzD,EAGyB+C,GAAA;AAAA,0BAFdxD,GAAA;AAAA,8DAAAA,GAAY,QAAAW;AAAA,cACpB,aAAaH,EAAApD,CAAA,EAAE,KAAA;AAAA,cAChB,OAAA,EAAA,OAAA,QAAA;AAAA,YAAA;YACFqD,EAEyB0D,IAAA;AAAA,cADtB,YAAY;AAAA,cACb,OAAA,EAAA,OAAA,QAAA;AAAA,YAAA;;UAEJ1D,EAGc2D,IAAA;AAAA,YAFX,OAAO5D,EAAApD,CAAA,EAAE,0BAAA;AAAA,YACV,MAAK;AAAA,YACL,aAAA;AAAA,UAAA;;;;;;"}
|
|
1
|
+
{"version":3,"file":"ThemeConfig-RodiZkNc.js","sources":["../layout/components/ThemeConfig.vue"],"sourcesContent":["<template>\n <div class=\"theme-config-page\">\n <!-- 操作栏 -->\n <div class=\"config-toolbar\">\n <span class=\"toolbar-title\">{{ ct('主题配置') }}</span>\n <el-radio-group\n v-model=\"modeValue\"\n @change=\"(val: any) => themeStore.setMode(val)\">\n <el-radio-button value=\"light\">{{ ct('亮色') }}</el-radio-button>\n <el-radio-button value=\"dark\">{{ ct('暗色') }}</el-radio-button>\n <el-radio-button value=\"auto\">{{ ct('跟随系统') }}</el-radio-button>\n </el-radio-group>\n <div class=\"flex-grow\"></div>\n <el-button @click=\"goDemo\">{{ ct('前往主题演示') }}</el-button>\n <el-button @click=\"resetDefault\">\n {{ ct('恢复默认') }}\n </el-button>\n <el-button\n type=\"primary\"\n @click=\"copyConfigCode\">\n {{ ct('复制配置代码') }}\n </el-button>\n </div>\n\n <!-- 常用配置 -->\n <h3 class=\"config-section-title\">{{ ct('状态色(自动派生变体)') }}</h3>\n <div class=\"status-grid\">\n <div\n v-for=\"name in STATUS_NAMES\"\n :key=\"name\"\n class=\"status-row\">\n <span\n class=\"status-chip\"\n :style=\"{backgroundColor: statusForm[name]?.light}\"></span>\n <span\n class=\"status-name\"\n :title=\"`elColor${cap(name)}`\">\n {{ STATUS_ZH[name] || name }} {{ name }}\n </span>\n <div class=\"status-pickers\">\n <el-color-picker\n v-model=\"statusForm[name].light\"\n @change=\"applyTheme\" />\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n </div>\n <div class=\"status-pickers\">\n <el-color-picker\n v-model=\"statusForm[name].dark\"\n @change=\"applyTheme\" />\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n </div>\n </div>\n </div>\n\n <h3 class=\"config-section-title\">{{ ct('布局变量') }}</h3>\n <div class=\"layout-card\">\n <div class=\"layout-line\">\n <div class=\"line-label\">\n <span class=\"label-zh\">头部高度</span>\n <span class=\"label-var\">--layout-header-height</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.headerHeight\"\n :min=\"40\"\n :max=\"120\"\n :step=\"4\"\n @change=\"applyTheme\" />\n <div class=\"line-label\">\n <span class=\"label-zh\">侧边栏宽度</span>\n <span class=\"label-var\">--layout-aside-width</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.asideWidth\"\n :min=\"160\"\n :max=\"400\"\n :step=\"10\"\n @change=\"applyTheme\" />\n <div class=\"line-label\">\n <span class=\"label-zh\">收起宽度</span>\n <span class=\"label-var\">--layout-aside-collapsed-width</span>\n </div>\n <el-input-number\n v-model=\"layoutForm.asideCollapsedWidth\"\n :min=\"40\"\n :max=\"120\"\n :step=\"4\"\n @change=\"applyTheme\" />\n <span class=\"unit\">px</span>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">头部背景(渐变)</span>\n <span class=\"label-var\">--layout-header-background</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.gradFrom\"\n @change=\"applyTheme\" />\n <span class=\"arrow\">→</span>\n <el-color-picker\n v-model=\"layoutForm.light.gradTo\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.gradFrom\"\n @change=\"applyTheme\" />\n <span class=\"arrow\">→</span>\n <el-color-picker\n v-model=\"layoutForm.dark.gradTo\"\n @change=\"applyTheme\" />\n </div>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">侧边栏背景</span>\n <span class=\"label-var\">--layout-aside-background</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.asideBg\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.asideBg\"\n @change=\"applyTheme\" />\n </div>\n </div>\n <div class=\"layout-line wrap\">\n <div class=\"line-label\">\n <span class=\"label-zh\">布局边框色</span>\n <span class=\"label-var\">--layout-border-color</span>\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('亮色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.light.borderColor\"\n @change=\"applyTheme\" />\n </div>\n <div class=\"pair\">\n <span class=\"picker-cap\">{{ ct('暗色') }}</span>\n <el-color-picker\n v-model=\"layoutForm.dark.borderColor\"\n @change=\"applyTheme\" />\n </div>\n </div>\n </div>\n\n <!-- 高级配置 -->\n <h3 class=\"config-section-title\">{{ ct('高级配置(全部变量)') }}</h3>\n <el-collapse v-model=\"openedPanels\">\n <el-collapse-item\n v-for=\"group in ADV_GROUPS\"\n :key=\"group.key\"\n :name=\"group.key\"\n :title=\"`${group.title}(${group.items.length})`\">\n <div class=\"adv-head-row\">\n <span>{{ ct('变量') }}</span>\n <span>{{ ct('亮色值') }}</span>\n <span>{{ ct('暗色值') }}</span>\n </div>\n <div\n v-for=\"item in group.items\"\n :key=\"item.key\"\n class=\"adv-row\">\n <span\n class=\"adv-label\"\n :title=\"toCssVar(item.key)\">\n <span class=\"label-zh\">{{ item.label }}</span>\n <span class=\"label-var\">{{ toCssVar(item.key) }}</span>\n </span>\n <div class=\"adv-control\">\n <el-color-picker\n v-if=\"isColorValue(advLight[item.key])\"\n v-model=\"advLight[item.key]\"\n show-alpha\n @change=\"applyTheme\" />\n <el-input\n v-else\n v-model=\"advLight[item.key]\"\n size=\"small\"\n @change=\"applyTheme\" />\n <span class=\"adv-value\">{{ getVarValue(item.key, 'light') }}</span>\n </div>\n <div class=\"adv-control\">\n <el-color-picker\n v-if=\"isColorValue(advDark[item.key])\"\n v-model=\"advDark[item.key]\"\n show-alpha\n @change=\"applyTheme\" />\n <el-input\n v-else\n v-model=\"advDark[item.key]\"\n size=\"small\"\n @change=\"applyTheme\" />\n <span class=\"adv-value\">{{ getVarValue(item.key, 'dark') }}</span>\n </div>\n </div>\n </el-collapse-item>\n </el-collapse>\n\n <!-- 实时预览 -->\n <h3 class=\"config-section-title\">{{ ct('实时预览') }}</h3>\n <div class=\"preview-card\">\n <div class=\"preview-row\">\n <el-button type=\"primary\">Primary</el-button>\n <el-button type=\"success\">Success</el-button>\n <el-button type=\"warning\">Warning</el-button>\n <el-button type=\"danger\">Danger</el-button>\n <el-tag type=\"primary\">Tag</el-tag>\n <el-switch v-model=\"previewSwitch\" />\n <el-checkbox\n v-model=\"previewCheck\">{{ ct('复选框') }}</el-checkbox>\n </div>\n <div class=\"preview-row\">\n <el-input\n v-model=\"previewInput\"\n :placeholder=\"ct('输入框')\"\n style=\"width: 200px\" />\n <el-progress\n :percentage=\"66\"\n style=\"width: 180px\" />\n </div>\n <el-alert\n :title=\"ct('布局头部与侧边栏即为实时预览效果,修改立即生效。')\"\n type=\"info\"\n show-icon />\n </div>\n </div>\n</template>\n\n<script setup lang=\"ts\">\n import {reactive, ref} from 'vue';\n import {storeToRefs} from 'pinia';\n import {useRouter} from 'vue-router';\n import {ElMessage} from 'element-plus';\n import {pinia} from '../../store';\n import {useClientStore} from 'yh-client';\n import {useThemeStore, toCssVarName} from '../../store/theme';\n import {\n DEFAULT_EL_VARS,\n DARK_EL_VARS,\n LAYOUT_VARS,\n DARK_LAYOUT_VARS,\n DEFAULT_VXE_VARS,\n DARK_VXE_VARS,\n } from '../../theme/vars';\n import {THEME_VAR_LABELS, STATUS_ZH} from './themeVarLabels';\n import {ct} from '../../utils/i18nHelp';\n\n const themeStore = useThemeStore();\n const router = useRouter();\n const clientStore = useClientStore(pinia);\n\n const {mode: modeValue} = storeToRefs(themeStore);\n\n function goDemo() {\n router.push(clientStore.isAdmin ? '/admin/theme-demo' : '/theme-demo');\n }\n\n // ---------- 工具 ----------\n // camelCase 变量 key 转 CSS 变量名,与 theme.ts updateCSSVars 保持一致\n function toCssVar(key: string): string {\n return `--${toCssVarName(key)}`;\n }\n\n function getVarValue(varKey: string, modeType: 'light' | 'dark'): string {\n const source = modeType === 'light' ? themeStore.lightVars : themeStore.darkVars;\n return (source as Record<string, string>)[varKey] ?? '-';\n }\n\n // 值是否为可被 el-color-picker 解析的颜色\n function isColorValue(value?: string): boolean {\n return /^(#[0-9a-f]{3,8}|rgba?\\(|hsla?\\()/i.test((value || '').trim());\n }\n\n function hexToRgb(hex: string): [number, number, number] {\n let h = hex.trim().replace('#', '');\n if (h.length === 3 || h.length === 4) {\n h = h\n .slice(0, 3)\n .split('')\n .map((c) => c + c)\n .join('');\n }\n const num = parseInt(h.slice(0, 6), 16);\n return [(num >> 16) & 255, (num >> 8) & 255, num & 255];\n }\n\n // 与 Element Plus 官方混色规则一致:ratio 为向 end 色混合的比例\n function mixColor(base: number[], end: number[], ratio: number): [number, number, number] {\n return [\n Math.round(base[0] * (1 - ratio) + end[0] * ratio),\n Math.round(base[1] * (1 - ratio) + end[1] * ratio),\n Math.round(base[2] * (1 - ratio) + end[2] * ratio),\n ];\n }\n\n function rgbToStr(rgb: [number, number, number]): string {\n return `#${rgb.map((c) => c.toString(16).padStart(2, '0')).join('')}`;\n }\n\n // 仅当值相对默认集发生变化时才写入补丁,保证导出的代码最小化\n function putIfChanged(\n patch: Record<string, string>,\n defaults: Record<string, string>,\n key: string,\n value: string\n ): void {\n const norm = (s?: string) => (s || '').trim().toLowerCase().replace(/\\s+/g, '');\n if (norm(value) !== norm(defaults[key])) {\n patch[key] = value;\n }\n }\n\n // ---------- 表单模型 ----------\n const STATUS_NAMES = ['primary', 'success', 'warning', 'danger', 'info'];\n const cap = (s: string) => s[0].toUpperCase() + s.slice(1);\n\n const statusForm = reactive<Record<string, {light: string; dark: string}>>({});\n\n const layoutForm = reactive({\n headerHeight: 60,\n asideWidth: 240,\n asideCollapsedWidth: 60,\n light: {gradFrom: '#0051C1', gradTo: '#3E93FE', asideBg: '#21304C', borderColor: '#f0f0f0'},\n dark: {gradFrom: '#1a1a1a', gradTo: '#2d2d2d', asideBg: '#212223', borderColor: '#363637'},\n });\n\n // 解析头部渐变字符串(亮度模式固定格式 linear-gradient(90deg, c1 0%, c2 100%))\n function parseGradient(bg?: string): [string, string] {\n const m = /linear-gradient\\(90deg,\\s*(\\S+)\\s+0%,\\s*(\\S+)\\s+100%\\)/.exec(bg || '');\n return m ? [m[1], m[2]] : ['#0051C1', '#3E93FE'];\n }\n\n // 高级区表单:键为驼峰变量 key,值为原始字符串\n const advLight = reactive<Record<string, string>>({});\n const advDark = reactive<Record<string, string>>({});\n\n interface AdvItem {\n key: string;\n label: string;\n }\n interface AdvGroup {\n key: string;\n title: string;\n items: AdvItem[];\n }\n\n function advItems(keys: string[]): AdvItem[] {\n return keys.map((key) => ({\n key,\n // 中文标签优先,缺失时回退为变量短名\n label: THEME_VAR_LABELS[key] || toCssVar(key).replace(/^--(el-|vxe-ui-)/, ''),\n }));\n }\n\n const ADV_GROUPS: AdvGroup[] = [\n {\n key: 'text',\n title: ct('文字颜色'),\n items: advItems([\n 'elTextColorPrimary',\n 'elTextColorRegular',\n 'elTextColorSecondary',\n 'elTextColorPlaceholder',\n 'elTextColorDisabled',\n ]),\n },\n {\n key: 'border',\n title: ct('边框颜色'),\n items: advItems([\n 'elBorderColor',\n 'elBorderColorLight',\n 'elBorderColorLighter',\n 'elBorderColorExtraLight',\n 'elBorderColorDark',\n 'elBorderColorDarker',\n ]),\n },\n {\n key: 'fill',\n title: ct('填充颜色'),\n items: advItems([\n 'elFillColor',\n 'elFillColorLight',\n 'elFillColorLighter',\n 'elFillColorExtraLight',\n 'elFillColorDark',\n 'elFillColorDarker',\n 'elFillColorBlank',\n ]),\n },\n {\n key: 'bg',\n title: ct('背景与遮罩'),\n items: advItems([\n 'elBgColor',\n 'elBgColorPage',\n 'elBgColorOverlay',\n 'elOverlayColor',\n 'elOverlayColorLight',\n 'elOverlayColorLighter',\n 'elMaskColor',\n 'elMaskColorExtraLight',\n ]),\n },\n {\n key: 'vxe',\n title: 'VXE',\n items: advItems(Object.keys({...DEFAULT_VXE_VARS, ...DARK_VXE_VARS})),\n },\n ];\n\n const openedPanels = ref<Array<string>>([]);\n\n // 从当前主题变量初始化表单回显\n function initForm(): void {\n const lightSource = themeStore.lightVars as Record<string, string>;\n const darkSource = themeStore.darkVars as Record<string, string>;\n\n STATUS_NAMES.forEach((name) => {\n const key = `elColor${cap(name)}`;\n statusForm[name] = {\n light: lightSource[key] || '#409eff',\n dark: darkSource[key] || '#409eff',\n };\n });\n\n layoutForm.headerHeight = parseInt(lightSource.layoutHeaderHeight, 10) || 60;\n layoutForm.asideWidth = parseInt(lightSource.layoutAsideWidth, 10) || 240;\n layoutForm.asideCollapsedWidth = parseInt(lightSource.layoutAsideCollapsedWidth, 10) || 60;\n\n const [lFrom, lTo] = parseGradient(lightSource.layoutHeaderBackground);\n layoutForm.light.gradFrom = lFrom;\n layoutForm.light.gradTo = lTo;\n const [dFrom, dTo] = parseGradient(darkSource.layoutHeaderBackground);\n layoutForm.dark.gradFrom = dFrom;\n layoutForm.dark.gradTo = dTo;\n layoutForm.light.asideBg = lightSource.layoutAsideBackground || '#21304C';\n layoutForm.light.borderColor = lightSource.layoutBorderColor || '#f0f0f0';\n layoutForm.dark.asideBg = darkSource.layoutAsideBackground || '#212223';\n layoutForm.dark.borderColor = darkSource.layoutBorderColor || '#363637';\n\n ADV_GROUPS.forEach((group) => {\n group.items.forEach((item) => {\n advLight[item.key] = lightSource[item.key] ?? '';\n advDark[item.key] = darkSource[item.key] ?? '';\n });\n });\n }\n\n initForm();\n\n // ---------- 应用与导出 ----------\n // 收集所有差异项(含状态色派生变体),亮暗两套\n function collectChanges(): {light: Record<string, string>; dark: Record<string, string>} {\n const light: Record<string, string> = {};\n const dark: Record<string, string> = {};\n\n // 布局尺寸(亮暗共用)\n putIfChanged(light, LAYOUT_VARS, 'layoutHeaderHeight', `${layoutForm.headerHeight}px`);\n putIfChanged(light, LAYOUT_VARS, 'layoutAsideWidth', `${layoutForm.asideWidth}px`);\n putIfChanged(\n light,\n LAYOUT_VARS,\n 'layoutAsideCollapsedWidth',\n `${layoutForm.asideCollapsedWidth}px`\n );\n\n // 布局颜色\n const composeGrad = (from: string, to: string) =>\n `linear-gradient(90deg, ${from} 0%, ${to} 100%)`;\n putIfChanged(\n light,\n LAYOUT_VARS,\n 'layoutHeaderBackground',\n composeGrad(layoutForm.light.gradFrom, layoutForm.light.gradTo)\n );\n putIfChanged(\n dark,\n DARK_LAYOUT_VARS,\n 'layoutHeaderBackground',\n composeGrad(layoutForm.dark.gradFrom, layoutForm.dark.gradTo)\n );\n putIfChanged(light, LAYOUT_VARS, 'layoutAsideBackground', layoutForm.light.asideBg);\n putIfChanged(light, LAYOUT_VARS, 'layoutBorderColor', layoutForm.light.borderColor);\n putIfChanged(dark, DARK_LAYOUT_VARS, 'layoutAsideBackground', layoutForm.dark.asideBg);\n putIfChanged(dark, DARK_LAYOUT_VARS, 'layoutBorderColor', layoutForm.dark.borderColor);\n\n // 状态色:按官方混色规则派生全部变体(基准色未改动时整组跳过,\n // 避免暗色默认值 rgb 浮点格式与派生 hex 格式不一致产生的假差异)\n STATUS_NAMES.forEach((name) => {\n const baseKey = `elColor${cap(name)}`;\n const norm = (s?: string) => (s || '').trim().toLowerCase();\n if (norm(statusForm[name].light) !== norm(DEFAULT_EL_VARS[baseKey])) {\n deriveStatus(light, DEFAULT_EL_VARS, name, statusForm[name].light, [255, 255, 255]);\n }\n if (norm(statusForm[name].dark) !== norm(DARK_EL_VARS[baseKey])) {\n deriveStatus(dark, DARK_EL_VARS, name, statusForm[name].dark, [20, 20, 20]);\n }\n });\n\n // 高级区灰度 / VXE 变量\n ADV_GROUPS.forEach((group) => {\n group.items.forEach((item) => {\n putIfChanged(light, DEFAULT_EL_VARS, item.key, advLight[item.key]);\n putIfChanged(dark, DARK_EL_VARS, item.key, advDark[item.key]);\n });\n });\n\n return {light, dark};\n }\n\n // 派生单个状态色的全部变量并按需写入补丁\n function deriveStatus(\n patch: Record<string, string>,\n defaults: Record<string, string>,\n name: string,\n baseHex: string,\n endPoint: number[]\n ): void {\n if (!isColorValue(baseHex) || !baseHex.startsWith('#')) return;\n\n const pascal = cap(name);\n putIfChanged(patch, defaults, `elColor${pascal}`, baseHex.toLowerCase());\n\n const base = hexToRgb(baseHex);\n\n const variants: Array<[string, number]> = [\n ['Light3', 0.3],\n ['Light5', 0.5],\n ['Light7', 0.7],\n ['Light8', 0.8],\n ['Light9', 0.9],\n ['Dark2', 0.2],\n ];\n variants.forEach(([suffix, ratio]) => {\n putIfChanged(\n patch,\n defaults,\n `elColor${pascal}${suffix}`,\n rgbToStr(mixColor(base, endPoint, ratio))\n );\n });\n\n putIfChanged(patch, defaults, `elColor${pascal}Rgb`, base.join(', '));\n }\n\n // 任一表单项变化:全量重算差异并应用到主题(仅内存,不持久化)\n function applyTheme(): void {\n const {light, dark} = collectChanges();\n themeStore.extend({light, dark});\n }\n\n function resetDefault(): void {\n themeStore.setTheme('default');\n themeStore.extend({light: {}, dark: {}});\n initForm();\n ElMessage.success(ct('已恢复默认主题'));\n }\n\n function objLiteral(obj: Record<string, string>): string {\n return Object.entries(obj)\n .map(([k, v]) => ` ${k}: '${v}',`)\n .join('\\n');\n }\n\n async function copyConfigCode(): Promise<void> {\n const {light, dark} = collectChanges();\n\n const parts: string[] = [];\n if (Object.keys(light).length > 0) {\n parts.push(` light: {\\n${objLiteral(light)}\\n }`);\n }\n if (Object.keys(dark).length > 0) {\n parts.push(` dark: {\\n${objLiteral(dark)}\\n }`);\n }\n const code =\n parts.length > 0\n ? `// 在应用入口调用(如 main.ts),仅包含相对默认值的改动\\nimport {useThemeStore} from 'yh-pub';\\n\\nuseThemeStore().extend({\\n${parts.join(',\\n')}\\n});`\n : `// 当前配置与默认主题一致,无需覆盖`;\n\n try {\n await navigator.clipboard.writeText(code);\n ElMessage.success(ct('配置代码已复制到剪贴板'));\n } catch {\n // fallback:textarea 选区复制\n const textarea = document.createElement('textarea');\n textarea.value = code;\n textarea.style.position = 'fixed';\n textarea.style.opacity = '0';\n document.body.appendChild(textarea);\n textarea.select();\n document.execCommand('copy');\n document.body.removeChild(textarea);\n ElMessage.success(ct('配置代码已复制到剪贴板'));\n }\n }\n\n // 预览区数据\n const previewSwitch = ref(true);\n const previewCheck = ref(true);\n const previewInput = ref('');\n</script>\n\n<style lang=\"scss\" scoped>\n .theme-config-page {\n max-width: 1280px;\n\n .flex-grow {\n flex: 1;\n }\n\n .config-toolbar {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 8px;\n\n .toolbar-title {\n font-size: 16px;\n font-weight: 600;\n margin-right: 8px;\n }\n }\n\n .config-section-title {\n margin: 24px 0 12px;\n padding-left: 8px;\n border-left: 3px solid var(--el-color-primary);\n font-size: 15px;\n line-height: 1.3;\n }\n\n .status-grid {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n .status-row {\n display: flex;\n align-items: center;\n gap: 12px;\n\n .status-chip {\n width: 28px;\n height: 28px;\n border-radius: 6px;\n border: 1px solid var(--el-border-color-lighter);\n }\n\n .status-name {\n flex: 0 0 120px;\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .status-pickers {\n display: flex;\n align-items: center;\n gap: 8px;\n }\n\n .picker-cap {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n }\n\n .layout-card {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n display: flex;\n flex-direction: column;\n gap: 12px;\n\n .layout-line {\n display: flex;\n align-items: center;\n gap: 12px;\n\n &.wrap {\n flex-wrap: wrap;\n }\n\n .line-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n\n .label-zh {\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .label-var {\n font-size: 11px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n word-break: break-all;\n }\n }\n\n .pair {\n display: flex;\n align-items: center;\n gap: 8px;\n\n .arrow {\n color: var(--el-text-color-placeholder);\n }\n\n .picker-cap {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n\n .unit {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n }\n }\n }\n\n .adv-head-row,\n .adv-row {\n display: grid;\n grid-template-columns: 260px minmax(220px, 1fr) minmax(220px, 1fr);\n gap: 12px;\n align-items: center;\n }\n\n .adv-head-row {\n font-size: 12px;\n color: var(--el-text-color-secondary);\n padding: 4px 0 8px;\n border-bottom: 1px dashed var(--el-border-color-lighter);\n margin-bottom: 8px;\n }\n\n .adv-row {\n padding: 4px 0;\n\n .adv-label {\n display: flex;\n flex-direction: column;\n gap: 2px;\n overflow: hidden;\n\n .label-zh {\n font-size: 13px;\n color: var(--el-text-color-regular);\n }\n\n .label-var {\n font-size: 10px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n word-break: break-all;\n line-height: 1.3;\n }\n }\n\n .adv-control {\n display: flex;\n align-items: center;\n gap: 8px;\n min-width: 0;\n\n .el-input {\n max-width: 240px;\n }\n\n .adv-value {\n font-size: 11px;\n font-family: monospace;\n color: var(--el-text-color-placeholder);\n overflow: hidden;\n text-overflow: ellipsis;\n white-space: nowrap;\n }\n }\n }\n\n .preview-card {\n border: 1px solid var(--el-border-color-lighter);\n border-radius: 8px;\n padding: 16px;\n margin-bottom: 24px;\n\n .preview-row {\n display: flex;\n align-items: center;\n gap: 12px;\n margin-bottom: 12px;\n\n &:last-child {\n margin-bottom: 0;\n }\n }\n }\n }\n</style>\n"],"names":["themeStore","useThemeStore","router","useRouter","clientStore","useClientStore","pinia","modeValue","storeToRefs","goDemo","toCssVar","key","toCssVarName","getVarValue","varKey","modeType","isColorValue","value","hexToRgb","hex","h","c","num","mixColor","base","end","ratio","rgbToStr","rgb","putIfChanged","patch","defaults","norm","s","STATUS_NAMES","cap","statusForm","reactive","layoutForm","parseGradient","bg","m","advLight","advDark","advItems","keys","THEME_VAR_LABELS","ADV_GROUPS","ct","DEFAULT_VXE_VARS","DARK_VXE_VARS","openedPanels","ref","initForm","lightSource","darkSource","name","lFrom","lTo","dFrom","dTo","group","item","collectChanges","light","dark","LAYOUT_VARS","composeGrad","from","to","DARK_LAYOUT_VARS","baseKey","DEFAULT_EL_VARS","deriveStatus","DARK_EL_VARS","baseHex","endPoint","pascal","suffix","applyTheme","resetDefault","ElMessage","objLiteral","obj","k","v","copyConfigCode","parts","code","textarea","previewSwitch","previewCheck","previewInput","_openBlock","_createElementBlock","_hoisted_1","_createElementVNode","_hoisted_2","_hoisted_3","_toDisplayString","_unref","_createVNode","_component_el_radio_group","$event","val","_component_el_radio_button","_component_el_button","_hoisted_4","_hoisted_5","_Fragment","_renderList","_normalizeStyle","_a","STATUS_ZH","_hoisted_6","_hoisted_7","_component_el_color_picker","_hoisted_8","_hoisted_9","_hoisted_10","_hoisted_11","_hoisted_12","_hoisted_13","_component_el_input_number","_cache","_hoisted_14","_hoisted_15","_hoisted_16","_hoisted_17","_hoisted_18","_hoisted_19","_hoisted_20","_hoisted_21","_hoisted_22","_hoisted_23","_hoisted_24","_hoisted_25","_hoisted_26","_hoisted_27","_hoisted_28","_hoisted_29","_component_el_collapse","_component_el_collapse_item","_hoisted_30","_hoisted_32","_hoisted_33","_hoisted_34","_createBlock","_component_el_input","_hoisted_35","_hoisted_36","_hoisted_37","_hoisted_38","_hoisted_39","_hoisted_40","_component_el_tag","_component_el_switch","_component_el_checkbox","_hoisted_41","_component_el_progress","_component_el_alert"],"mappings":"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"}
|
|
@@ -2,7 +2,7 @@ import { defineComponent as Ce, reactive as N, ref as R, resolveComponent as c,
|
|
|
2
2
|
import { useRouter as Ee } from "vue-router";
|
|
3
3
|
import { storeToRefs as Be } from "pinia";
|
|
4
4
|
import { ElMessage as O, ElNotification as Ae, ElMessageBox as Pe, ElLoading as Ue } from "element-plus";
|
|
5
|
-
import { u as $e, p as Me, c as l, D as ze, a as Ke, _ as Fe } from "./index-
|
|
5
|
+
import { u as $e, p as Me, c as l, D as ze, a as Ke, _ as Fe } from "./index-Do4p1wEn.js";
|
|
6
6
|
import { useClientStore as Ne } from "yh-client";
|
|
7
7
|
import { S as Re, T as H } from "./themeVarLabels-CYr0ZzvW.js";
|
|
8
8
|
const Oe = { class: "theme-demo-page" }, He = { class: "demo-toolbar" }, Xe = { class: "demo-section-title" }, Ie = { class: "sub-title" }, We = { class: "swatch-grid" }, Ze = { class: "swatch-name" }, Ge = { class: "swatch-var" }, je = { class: "swatch-value" }, qe = { class: "rgb-line" }, Ye = { class: "demo-section-title" }, Je = { class: "sub-title" }, Qe = { class: "swatch-grid" }, el = { class: "swatch-name" }, ll = { class: "swatch-var" }, tl = { class: "swatch-value" }, ol = { class: "swatch-name" }, sl = { class: "swatch-var" }, al = { class: "swatch-value" }, nl = { class: "demo-section-title" }, il = { class: "layout-preview" }, rl = { class: "layout-row" }, dl = { class: "swatch-value" }, ul = { class: "layout-row" }, cl = { class: "swatch-value" }, _l = { class: "layout-dims" }, pl = ["title"], ml = { class: "dim-name" }, vl = { class: "dim-value" }, gl = { class: "demo-section-title" }, fl = { class: "demo-block" }, bl = { class: "block-title" }, yl = { class: "demo-block" }, kl = { class: "block-title" }, hl = { class: "demo-block" }, wl = { class: "block-title" }, Vl = { class: "demo-block" }, Cl = { class: "block-title" }, xl = { class: "demo-block" }, Tl = { class: "demo-block" }, Ll = { class: "block-title" }, Dl = { class: "demo-section-title" }, Sl = { class: "swatch-grid" }, El = {
|
|
@@ -773,4 +773,4 @@ const Oe = { class: "theme-demo-page" }, He = { class: "demo-toolbar" }, Xe = {
|
|
|
773
773
|
export {
|
|
774
774
|
Hl as default
|
|
775
775
|
};
|
|
776
|
-
//# sourceMappingURL=ThemeDemo-
|
|
776
|
+
//# sourceMappingURL=ThemeDemo-hKi0fOQ_.js.map
|