diff --git a/configs/config.example.yml b/configs/config.example.yml index fef4c4b..0e2f50c 100644 --- a/configs/config.example.yml +++ b/configs/config.example.yml @@ -36,11 +36,10 @@ multitable: scenarios: 0 scenario_fields: 0 scenario_rules: 0 - sop_versions: 0 + sops: 0 sop_nodes: 0 sop_edges: 0 knowledge_items: 0 knowledge_relations: 0 - knowledge_versions: 0 runs: 0 feedback: 0 diff --git a/configs/config.prod.yml b/configs/config.prod.yml index ef664f3..dba635b 100644 --- a/configs/config.prod.yml +++ b/configs/config.prod.yml @@ -30,11 +30,10 @@ multitable: scenarios: 66 scenario_fields: 67 scenario_rules: 68 - sop_versions: 69 + sops: 69 sop_nodes: 70 sop_edges: 71 knowledge_items: 72 knowledge_relations: 73 - knowledge_versions: 74 runs: 75 feedback: 76 diff --git a/configs/config.yml b/configs/config.yml index 5d8605f..772296b 100644 --- a/configs/config.yml +++ b/configs/config.yml @@ -36,11 +36,10 @@ multitable: scenarios: 46 scenario_fields: 47 scenario_rules: 63 - sop_versions: 48 + sops: 48 sop_nodes: 49 sop_edges: 50 knowledge_items: 64 knowledge_relations: 65 - knowledge_versions: 51 runs: 52 feedback: 53 diff --git a/internal/config/config.go b/internal/config/config.go index 22f96f2..5394115 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -79,15 +79,13 @@ type MultiTableTables struct { Scenarios uint64 `yaml:"scenarios" env:"APP_MULTITABLE_TABLES_SCENARIOS"` ScenarioFields uint64 `yaml:"scenario_fields" env:"APP_MULTITABLE_TABLES_SCENARIO_FIELDS"` ScenarioRules uint64 `yaml:"scenario_rules" env:"APP_MULTITABLE_TABLES_SCENARIO_RULES"` - SOPVersions uint64 `yaml:"sop_versions" env:"APP_MULTITABLE_TABLES_SOP_VERSIONS"` + SOPs uint64 `yaml:"sops" env:"APP_MULTITABLE_TABLES_SOPS"` SOPNodes uint64 `yaml:"sop_nodes" env:"APP_MULTITABLE_TABLES_SOP_NODES"` SOPEdges uint64 `yaml:"sop_edges" env:"APP_MULTITABLE_TABLES_SOP_EDGES"` KnowledgeItems uint64 `yaml:"knowledge_items" env:"APP_MULTITABLE_TABLES_KNOWLEDGE_ITEMS"` KnowledgeRelations uint64 `yaml:"knowledge_relations" env:"APP_MULTITABLE_TABLES_KNOWLEDGE_RELATIONS"` - // KnowledgeVersions is retained only for replaying historical projection events. - KnowledgeVersions uint64 `yaml:"knowledge_versions" env:"APP_MULTITABLE_TABLES_KNOWLEDGE_VERSIONS"` - Runs uint64 `yaml:"runs" env:"APP_MULTITABLE_TABLES_RUNS"` - Feedback uint64 `yaml:"feedback" env:"APP_MULTITABLE_TABLES_FEEDBACK"` + Runs uint64 `yaml:"runs" env:"APP_MULTITABLE_TABLES_RUNS"` + Feedback uint64 `yaml:"feedback" env:"APP_MULTITABLE_TABLES_FEEDBACK"` } type LoadOptions struct { @@ -188,7 +186,7 @@ func (c Config) Validate() error { c.MultiTable.Tables.Scenarios, c.MultiTable.Tables.ScenarioFields, c.MultiTable.Tables.ScenarioRules, - c.MultiTable.Tables.SOPVersions, + c.MultiTable.Tables.SOPs, c.MultiTable.Tables.SOPNodes, c.MultiTable.Tables.SOPEdges, c.MultiTable.Tables.KnowledgeItems, diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 859bae9..c3bf300 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -87,10 +87,9 @@ func TestLoadMultiTableEnvironmentConfiguration(t *testing.T) { "APP_MULTITABLE_TABLES_SCENARIOS": "46", "APP_MULTITABLE_TABLES_SCENARIO_FIELDS": "47", "APP_MULTITABLE_TABLES_SCENARIO_RULES": "54", - "APP_MULTITABLE_TABLES_SOP_VERSIONS": "48", + "APP_MULTITABLE_TABLES_SOPS": "48", "APP_MULTITABLE_TABLES_SOP_NODES": "49", "APP_MULTITABLE_TABLES_SOP_EDGES": "50", - "APP_MULTITABLE_TABLES_KNOWLEDGE_VERSIONS": "51", "APP_MULTITABLE_TABLES_KNOWLEDGE_ITEMS": "55", "APP_MULTITABLE_TABLES_KNOWLEDGE_RELATIONS": "56", "APP_MULTITABLE_TABLES_RUNS": "52", diff --git a/internal/database/database.go b/internal/database/database.go index 1cd19e4..12f25ca 100644 --- a/internal/database/database.go +++ b/internal/database/database.go @@ -4,6 +4,7 @@ import ( "context" "errors" "fmt" + "strings" "time" "git.iwork-ai.com/xdc/iqudo-top1/internal/config" @@ -43,6 +44,17 @@ func Open(cfg config.DatabaseConfig, log *zap.Logger) (*gorm.DB, error) { // existing columns, which keeps production data safe during application // upgrades. func AutoMigrate(db *gorm.DB) error { + // The application schema intentionally has no foreign keys. Remove any + // constraints left by older installations before dropping legacy tables. + if err := dropAllForeignKeys(db); err != nil { + return err + } + if err := dropUnusedLegacyTables(db); err != nil { + return err + } + if err := prepareSingleVersionSchema(db); err != nil { + return err + } return db.AutoMigrate( &model.Tenant{}, &model.User{}, @@ -52,11 +64,8 @@ func AutoMigrate(db *gorm.DB) error { &model.ScenarioField{}, &model.ScenarioRule{}, &model.SOP{}, - &model.SOPVersion{}, &model.SOPNode{}, &model.SOPEdge{}, - &model.KnowledgeCard{}, - &model.KnowledgeCardVersion{}, &model.KnowledgeItem{}, &model.KnowledgeRelation{}, &model.SOPRun{}, @@ -69,6 +78,154 @@ func AutoMigrate(db *gorm.DB) error { ) } +// dropUnusedLegacyTables removes schema objects that are no longer part of +// the scenario knowledge graph. Drop the version table before its parent so +// this remains safe for databases that still have a historical constraint. +func dropUnusedLegacyTables(db *gorm.DB) error { + for _, table := range []string{"knowledge_card_versions", "knowledge_cards"} { + if !db.Migrator().HasTable(table) { + continue + } + if err := db.Exec("DROP TABLE " + quoteIdentifier(table)).Error; err != nil { + return fmt.Errorf("drop unused table %s: %w", table, err) + } + } + return nil +} + +// prepareSingleVersionSchema performs the data-preserving part of the SOP +// version removal. GORM does not rename or drop columns, so existing installs +// need their current published version copied onto the single SOP graph. +func prepareSingleVersionSchema(db *gorm.DB) error { + if !db.Migrator().HasTable("sops") { + return nil + } + // Foreign keys are intentionally not part of the application schema. Drop + // historical constraints before GORM rebuilds any tables during migration; + // old version references may contain rows that no longer have a parent. + if err := dropAllForeignKeys(db); err != nil { + return err + } + if !db.Migrator().HasColumn("sops", "start_node_key") { + if err := db.Exec("ALTER TABLE sops ADD COLUMN start_node_key VARCHAR(64) NOT NULL DEFAULT 'start'").Error; err != nil { + return fmt.Errorf("add sops.start_node_key: %w", err) + } + } + if db.Migrator().HasTable("sop_versions") { + if err := db.Exec("UPDATE sops s JOIN sop_versions sv ON sv.id = (SELECT MAX(sv2.id) FROM sop_versions sv2 WHERE sv2.sop_id = s.id AND sv2.status = 'published') SET s.start_node_key = COALESCE(NULLIF(sv.start_node_key, ''), NULLIF(s.start_node_key, ''), 'start')").Error; err != nil { + return fmt.Errorf("copy SOP start nodes: %w", err) + } + } + for _, table := range []string{"sop_nodes", "sop_edges", "sop_runs"} { + if !db.Migrator().HasTable(table) { + continue + } + if !db.Migrator().HasColumn(table, "sop_id") { + if err := db.Exec(fmt.Sprintf("ALTER TABLE %s ADD COLUMN sop_id BIGINT UNSIGNED NULL", table)).Error; err != nil { + return fmt.Errorf("add %s.sop_id: %w", table, err) + } + } + if db.Migrator().HasTable("sop_versions") && db.Migrator().HasColumn(table, "sop_version_id") { + if err := db.Exec(fmt.Sprintf("UPDATE %s x JOIN sop_versions sv ON sv.id = x.sop_version_id SET x.sop_id = sv.sop_id", table)).Error; err != nil { + return fmt.Errorf("copy %s SOP references: %w", table, err) + } + } + } + if db.Migrator().HasTable("sop_versions") { + if err := db.Exec("DELETE n FROM sop_nodes n JOIN sop_versions sv ON sv.id = n.sop_version_id WHERE sv.status <> 'published' OR sv.id <> (SELECT MAX(sv2.id) FROM sop_versions sv2 WHERE sv2.sop_id = sv.sop_id AND sv2.status = 'published')").Error; err != nil { + return fmt.Errorf("remove historical SOP nodes: %w", err) + } + if err := db.Exec("DELETE e FROM sop_edges e JOIN sop_versions sv ON sv.id = e.sop_version_id WHERE sv.status <> 'published' OR sv.id <> (SELECT MAX(sv2.id) FROM sop_versions sv2 WHERE sv2.sop_id = sv.sop_id AND sv2.status = 'published')").Error; err != nil { + return fmt.Errorf("remove historical SOP edges: %w", err) + } + } + if err := removeLegacySOPVersionColumns(db); err != nil { + return err + } + return nil +} + +// removeLegacySOPVersionColumns completes the single-version migration. The +// old columns are not represented by the GORM models, so AutoMigrate cannot +// remove them. Leaving a NOT NULL sop_version_id behind makes inserts fail. +func removeLegacySOPVersionColumns(db *gorm.DB) error { + for _, table := range []string{"sop_nodes", "sop_edges", "sop_runs"} { + if !db.Migrator().HasTable(table) { + continue + } + if !db.Migrator().HasColumn(table, "sop_id") { + continue + } + var missing int64 + if err := db.Table(table).Where("sop_id IS NULL").Count(&missing).Error; err != nil { + return fmt.Errorf("check %s SOP references: %w", table, err) + } + if missing > 0 { + return fmt.Errorf("cannot remove %s.sop_version_id: %d rows have no sop_id", table, missing) + } + if err := db.Exec(fmt.Sprintf("ALTER TABLE %s MODIFY COLUMN sop_id BIGINT UNSIGNED NOT NULL", quoteIdentifier(table))).Error; err != nil { + return fmt.Errorf("make %s.sop_id required: %w", table, err) + } + if !db.Migrator().HasColumn(table, "sop_version_id") { + continue + } + if err := dropIndexesForColumn(db, table, "sop_version_id"); err != nil { + return err + } + if err := db.Exec(fmt.Sprintf("ALTER TABLE %s DROP COLUMN sop_version_id", quoteIdentifier(table))).Error; err != nil { + return fmt.Errorf("drop %s.sop_version_id: %w", table, err) + } + } + if db.Migrator().HasTable("sop_versions") { + if err := db.Exec("DROP TABLE sop_versions").Error; err != nil { + return fmt.Errorf("drop sop_versions: %w", err) + } + } + return nil +} + +func dropIndexesForColumn(db *gorm.DB, table, column string) error { + var indexes []struct { + Name string `gorm:"column:index_name"` + } + if err := db.Raw("SELECT DISTINCT INDEX_NAME AS index_name FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = ? AND COLUMN_NAME = ? AND INDEX_NAME <> 'PRIMARY'", table, column).Scan(&indexes).Error; err != nil { + return fmt.Errorf("list %s.%s indexes: %w", table, column, err) + } + for _, index := range indexes { + if index.Name == "" { + continue + } + if err := db.Exec(fmt.Sprintf("ALTER TABLE %s DROP INDEX %s", quoteIdentifier(table), quoteIdentifier(index.Name))).Error; err != nil { + return fmt.Errorf("drop index %s.%s: %w", table, index.Name, err) + } + } + return nil +} + +func dropAllForeignKeys(db *gorm.DB) error { + var constraints []struct { + TableName string `gorm:"column:table_name"` + ConstraintName string `gorm:"column:constraint_name"` + } + if err := db.Raw("SELECT TABLE_NAME AS table_name, CONSTRAINT_NAME AS constraint_name FROM information_schema.TABLE_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_TYPE = 'FOREIGN KEY'").Scan(&constraints).Error; err != nil { + return fmt.Errorf("list foreign keys: %w", err) + } + for _, constraint := range constraints { + if constraint.TableName == "" || constraint.ConstraintName == "" { + continue + } + query := fmt.Sprintf("ALTER TABLE %s DROP FOREIGN KEY %s", quoteIdentifier(constraint.TableName), quoteIdentifier(constraint.ConstraintName)) + if err := db.Exec(query).Error; err != nil { + return fmt.Errorf("drop foreign key %s.%s: %w", constraint.TableName, constraint.ConstraintName, err) + } + } + return nil +} + +func quoteIdentifier(value string) string { + return "`" + strings.ReplaceAll(value, "`", "``") + "`" +} + type zapGORMLogger struct { log *zap.Logger level gormlogger.LogLevel diff --git a/internal/knowledge/content.go b/internal/knowledge/content.go deleted file mode 100644 index 511b928..0000000 --- a/internal/knowledge/content.go +++ /dev/null @@ -1,197 +0,0 @@ -package knowledge - -import ( - "encoding/json" - "errors" - "fmt" - "regexp" - "strings" -) - -var contentKeyPattern = regexp.MustCompile(`^[A-Za-z][A-Za-z0-9_]{0,63}$`) -var placeholderPattern = regexp.MustCompile(`\{\{\s*((?:input|card)\.[A-Za-z][A-Za-z0-9_]*)\s*\}\}`) - -type CardField struct { - Key string `json:"key"` - Name string `json:"name"` - Value interface{} `json:"value"` - SourceField string `json:"source_field,omitempty"` -} - -type CopyTemplate struct { - ID string `json:"id"` - Title string `json:"title"` - Content string `json:"content"` -} - -type Content struct { - Fields []CardField `json:"fields,omitempty"` - CopyTemplates []CopyTemplate `json:"copy_templates,omitempty"` - StandardCopy string `json:"standard_copy,omitempty"` - ForbiddenCopy string `json:"forbidden_copy,omitempty"` - RiskNote string `json:"risk_note,omitempty"` -} - -type RenderedCopy struct { - ID string `json:"id"` - Title string `json:"title"` - Content string `json:"content"` -} - -func ParseContent(raw []byte) (Content, error) { - var content Content - if err := json.Unmarshal(raw, &content); err != nil { - return Content{}, errors.New("知识卡内容必须是 JSON 对象") - } - return normalizeAndValidate(content) -} - -func ParseContentMap(value map[string]interface{}) (Content, error) { - raw, err := json.Marshal(value) - if err != nil { - return Content{}, err - } - return ParseContent(raw) -} - -func ValidateReferences(content Content, scenarioFieldKeys map[string]bool) error { - cardFieldKeys := make(map[string]bool, len(content.Fields)) - for _, field := range content.Fields { - cardFieldKeys[field.Key] = true - if field.SourceField != "" && !scenarioFieldKeys[field.SourceField] { - return fmt.Errorf("知识字段“%s”关联的场景字段“%s”不存在", field.Name, field.SourceField) - } - } - for _, template := range content.CopyTemplates { - for _, match := range placeholderPattern.FindAllStringSubmatch(template.Content, -1) { - if len(match) != 2 { - continue - } - parts := strings.SplitN(match[1], ".", 2) - if len(parts) != 2 { - continue - } - switch parts[0] { - case "input": - if !scenarioFieldKeys[parts[1]] { - return fmt.Errorf("话术“%s”引用的场景字段“%s”不存在", template.Title, parts[1]) - } - case "card": - if !cardFieldKeys[parts[1]] { - return fmt.Errorf("话术“%s”引用的知识字段“%s”不存在", template.Title, parts[1]) - } - } - } - } - return nil -} - -func Render(content Content, answers map[string]interface{}) []RenderedCopy { - values := make(map[string]string, len(answers)+len(content.Fields)*2) - for key, value := range answers { - values["input."+key] = displayValue(value) - } - for _, field := range content.Fields { - value := field.Value - if field.SourceField != "" { - if answer, ok := answers[field.SourceField]; ok && hasValue(answer) { - value = answer - } - } - values["card."+field.Key] = displayValue(value) - } - copies := make([]RenderedCopy, 0, len(content.CopyTemplates)) - for _, template := range content.CopyTemplates { - copies = append(copies, RenderedCopy{ID: template.ID, Title: template.Title, Content: placeholderPattern.ReplaceAllStringFunc(template.Content, func(token string) string { - matches := placeholderPattern.FindStringSubmatch(token) - if len(matches) != 2 || values[matches[1]] == "" { - return "未提供" - } - return values[matches[1]] - })}) - } - return copies -} - -func PrimaryCopy(content Content) string { - if len(content.CopyTemplates) > 0 { - return content.CopyTemplates[0].Content - } - return content.StandardCopy -} - -func normalizeAndValidate(content Content) (Content, error) { - content.StandardCopy = strings.TrimSpace(content.StandardCopy) - content.ForbiddenCopy = strings.TrimSpace(content.ForbiddenCopy) - content.RiskNote = strings.TrimSpace(content.RiskNote) - if len(content.CopyTemplates) == 0 && content.StandardCopy != "" { - content.CopyTemplates = []CopyTemplate{{ID: "default", Title: "标准话术", Content: content.StandardCopy}} - } - if len(content.CopyTemplates) == 0 { - return Content{}, errors.New("请至少填写一条话术模板") - } - seenFields := map[string]bool{} - for i := range content.Fields { - field := &content.Fields[i] - field.Key = strings.TrimSpace(field.Key) - field.Name = strings.TrimSpace(field.Name) - field.SourceField = strings.TrimSpace(field.SourceField) - if !contentKeyPattern.MatchString(field.Key) || field.Name == "" { - return Content{}, errors.New("知识字段需要有效的字段标识和字段名称") - } - if seenFields[field.Key] { - return Content{}, fmt.Errorf("知识字段标识“%s”重复", field.Key) - } - if field.SourceField != "" && !contentKeyPattern.MatchString(field.SourceField) { - return Content{}, fmt.Errorf("知识字段“%s”的关联字段标识不正确", field.Name) - } - seenFields[field.Key] = true - } - seenTemplates := map[string]bool{} - for i := range content.CopyTemplates { - template := &content.CopyTemplates[i] - template.ID = strings.TrimSpace(template.ID) - template.Title = strings.TrimSpace(template.Title) - template.Content = strings.TrimSpace(template.Content) - if !contentKeyPattern.MatchString(template.ID) || template.Title == "" || template.Content == "" { - return Content{}, errors.New("每条话术需要有效的标识、标题和内容") - } - if seenTemplates[template.ID] { - return Content{}, fmt.Errorf("话术标识“%s”重复", template.ID) - } - seenTemplates[template.ID] = true - } - if content.StandardCopy == "" { - content.StandardCopy = content.CopyTemplates[0].Content - } - return content, nil -} - -func hasValue(value interface{}) bool { - if value == nil { - return false - } - return strings.TrimSpace(displayValue(value)) != "" -} - -func displayValue(value interface{}) string { - switch typed := value.(type) { - case nil: - return "" - case bool: - if typed { - return "是" - } - return "否" - case []interface{}: - items := make([]string, 0, len(typed)) - for _, item := range typed { - items = append(items, displayValue(item)) - } - return strings.Join(items, "、") - case []string: - return strings.Join(typed, "、") - default: - return fmt.Sprint(value) - } -} diff --git a/internal/knowledge/content_test.go b/internal/knowledge/content_test.go deleted file mode 100644 index bfa9b18..0000000 --- a/internal/knowledge/content_test.go +++ /dev/null @@ -1,44 +0,0 @@ -package knowledge - -import "testing" - -func TestParseContentAcceptsLegacyStandardCopy(t *testing.T) { - content, err := ParseContent([]byte(`{"standard_copy":"请说明情况","risk_note":"必要时转诊"}`)) - if err != nil { - t.Fatal(err) - } - if len(content.CopyTemplates) != 1 || content.CopyTemplates[0].ID != "default" || content.StandardCopy != "请说明情况" { - t.Fatalf("unexpected legacy content: %#v", content) - } -} - -func TestValidateReferencesRejectsUnknownScenarioField(t *testing.T) { - content, err := ParseContent([]byte(`{"fields":[{"key":"symptom","name":"症状","source_field":"pet_symptom"}],"copy_templates":[{"id":"copy","title":"说明","content":"{{card.symptom}}"}]}`)) - if err != nil { - t.Fatal(err) - } - if err := ValidateReferences(content, map[string]bool{"pet_name": true}); err == nil { - t.Fatal("ValidateReferences() error = nil, want unknown source field error") - } -} - -func TestValidateReferencesRejectsUnknownTemplateField(t *testing.T) { - content, err := ParseContent([]byte(`{"fields":[{"key":"symptom","name":"症状"}],"copy_templates":[{"id":"copy","title":"说明","content":"{{input.pet_name}} {{card.disease}}"}]}`)) - if err != nil { - t.Fatal(err) - } - if err := ValidateReferences(content, map[string]bool{"pet_name": true}); err == nil { - t.Fatal("ValidateReferences() error = nil, want unknown knowledge field error") - } -} - -func TestRenderResolvesInputAndCardFields(t *testing.T) { - content, err := ParseContent([]byte(`{"fields":[{"key":"symptom","name":"症状","value":"未明确","source_field":"symptom"},{"key":"disease","name":"可能疾病","value":"需要医生评估"}],"copy_templates":[{"id":"copy","title":"说明","content":"{{input.pet_name}}出现{{card.symptom}},{{card.disease}}。{{input.pet_age}}岁。"}]}`)) - if err != nil { - t.Fatal(err) - } - copies := Render(content, map[string]interface{}{"pet_name": "团子", "symptom": "呕吐", "pet_age": 3}) - if len(copies) != 1 || copies[0].Content != "团子出现呕吐,需要医生评估。3岁。" { - t.Fatalf("rendered copies = %#v", copies) - } -} diff --git a/internal/knowledge/handler.go b/internal/knowledge/handler.go index 6c7ea4f..29fe11b 100644 --- a/internal/knowledge/handler.go +++ b/internal/knowledge/handler.go @@ -2,8 +2,7 @@ package knowledge import "gorm.io/gorm" -// Handler exposes only the scenario knowledge-graph API. Legacy knowledge-card -// tables are retained as read-only storage for historical run rendering. +// Handler exposes the scenario knowledge-graph API. type Handler struct { db *gorm.DB } diff --git a/internal/model/models.go b/internal/model/models.go index 021dd69..daf6d9d 100644 --- a/internal/model/models.go +++ b/internal/model/models.go @@ -90,66 +90,38 @@ type ScenarioRule struct { type SOP struct { Base - TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - ScenarioID uint64 `json:"scenario_id" gorm:"not null;index"` - Name string `json:"name" gorm:"size:128;not null"` - Description string `json:"description" gorm:"type:text;not null"` - Status string `json:"status" gorm:"size:24;not null"` - CreatedBy uint64 `json:"created_by" gorm:"not null"` -} - -type SOPVersion struct { - Base - TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - SOPID uint64 `json:"sop_id" gorm:"not null;index"` - Version int `json:"version" gorm:"not null"` - Status string `json:"status" gorm:"size:24;not null"` - StartNodeKey string `json:"start_node_key" gorm:"size:64;not null"` - PublishedAt *time.Time `json:"published_at"` - CreatedBy uint64 `json:"created_by" gorm:"not null"` + TenantID uint64 `json:"tenant_id" gorm:"not null;index"` + ScenarioID uint64 `json:"scenario_id" gorm:"not null;index"` + Name string `json:"name" gorm:"size:128;not null"` + Description string `json:"description" gorm:"type:text;not null"` + Status string `json:"status" gorm:"size:24;not null"` + CreatedBy uint64 `json:"created_by" gorm:"not null"` + StartNodeKey string `json:"start_node_key" gorm:"size:64;not null"` } type SOPNode struct { Base - TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - SOPVersionID uint64 `json:"sop_version_id" gorm:"not null;index"` - NodeKey string `json:"node_key" gorm:"size:64;not null"` - Type string `json:"type" gorm:"size:32;not null"` - Title string `json:"title" gorm:"size:128;not null"` - Content string `json:"content" gorm:"type:text;not null"` - Config datatypes.JSON `json:"config" gorm:"type:json;not null"` - PositionX int `json:"position_x" gorm:"not null"` - PositionY int `json:"position_y" gorm:"not null"` + TenantID uint64 `json:"tenant_id" gorm:"not null;index"` + SOPID uint64 `json:"sop_id" gorm:"not null;index"` + NodeKey string `json:"node_key" gorm:"size:64;not null"` + Type string `json:"type" gorm:"size:32;not null"` + Title string `json:"title" gorm:"size:128;not null"` + Content string `json:"content" gorm:"type:text;not null"` + Config datatypes.JSON `json:"config" gorm:"type:json;not null"` + PositionX int `json:"position_x" gorm:"not null"` + PositionY int `json:"position_y" gorm:"not null"` } type SOPEdge struct { Base TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - SOPVersionID uint64 `json:"sop_version_id" gorm:"not null;index"` + SOPID uint64 `json:"sop_id" gorm:"not null;index"` SourceNodeKey string `json:"source_node_key" gorm:"size:64;not null"` TargetNodeKey string `json:"target_node_key" gorm:"size:64;not null"` Condition datatypes.JSON `json:"condition" gorm:"type:json;not null"` Priority int `json:"priority" gorm:"not null"` } -type KnowledgeCard struct { - Base - TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - ScenarioID uint64 `json:"scenario_id" gorm:"not null;index"` - Title string `json:"title" gorm:"size:128;not null"` - Status string `json:"status" gorm:"size:24;not null"` - CreatedBy uint64 `json:"created_by" gorm:"not null"` -} - -type KnowledgeCardVersion struct { - Base - TenantID uint64 `json:"tenant_id" gorm:"not null;index"` - KnowledgeCardID uint64 `json:"knowledge_card_id" gorm:"not null;index"` - Version int `json:"version" gorm:"not null"` - Content datatypes.JSON `json:"content" gorm:"type:json;not null"` - Status string `json:"status" gorm:"size:24;not null"` -} - type KnowledgeItem struct { Base TenantID uint64 `json:"tenant_id" gorm:"not null;index"` @@ -177,7 +149,6 @@ type SOPRun struct { Base TenantID uint64 `json:"tenant_id" gorm:"not null;index"` SOPID uint64 `json:"sop_id" gorm:"not null;index"` - SOPVersionID uint64 `json:"sop_version_id" gorm:"not null;index"` OperatorID uint64 `json:"operator_id" gorm:"not null;index"` ExternalRef string `json:"external_ref" gorm:"size:191;not null;index"` CurrentNodeKey string `json:"current_node_key" gorm:"size:64;not null"` diff --git a/internal/multitable/projector.go b/internal/multitable/projector.go index 5463d9b..f3b807d 100644 --- a/internal/multitable/projector.go +++ b/internal/multitable/projector.go @@ -150,46 +150,33 @@ func (p *Projector) sop(ctx context.Context, event model.MultiTableOutbox) error if err := p.db.Where("id = ? AND tenant_id = ?", event.ResourceID, event.TenantID).First(&sop).Error; err != nil { return err } - versions := make([]model.SOPVersion, 0) - if err := p.db.Where("sop_id = ? AND tenant_id = ? AND status IN ?", sop.ID, sop.TenantID, []string{"published", "superseded", "offline"}).Find(&versions).Error; err != nil { - return err - } - for _, version := range versions { - if err := p.sopVersion(ctx, sop, version); err != nil { - return err - } - } - return nil -} - -func (p *Projector) sopVersion(ctx context.Context, sop model.SOP, version model.SOPVersion) error { nodes := make([]model.SOPNode, 0) edges := make([]model.SOPEdge, 0) - if err := p.db.Where("sop_version_id = ?", version.ID).Order("id").Find(&nodes).Error; err != nil { + if err := p.db.Where("sop_id = ? AND tenant_id = ?", sop.ID, sop.TenantID).Order("id").Find(&nodes).Error; err != nil { return err } - if err := p.db.Where("sop_version_id = ?", version.ID).Order("priority, id").Find(&edges).Error; err != nil { + if err := p.db.Where("sop_id = ? AND tenant_id = ?", sop.ID, sop.TenantID).Order("priority, id").Find(&edges).Error; err != nil { return err } - state := statusFor(version.Status) + state := statusFor(sop.Status) if sop.Status == "archived" { state = "已归档" } - if err := p.client.Upsert(ctx, p.tables.SOPVersions, id(version.ID), common(version.ID, version.TenantID, state, version.UpdatedAt, map[string]interface{}{ - "SOP来源ID": id(sop.ID), "场景来源ID": id(sop.ScenarioID), "SOP名称": sop.Name, "版本号": version.Version, "版本状态": version.Status, "开始节点": version.StartNodeKey, "发布时间": formatTime(version.PublishedAt), "节点数": len(nodes), "路径数": len(edges), + if err := p.client.Upsert(ctx, p.tables.SOPs, id(sop.ID), common(sop.ID, sop.TenantID, state, sop.UpdatedAt, map[string]interface{}{ + "场景来源ID": id(sop.ScenarioID), "SOP名称": sop.Name, "SOP状态": sop.Status, "开始节点": sop.StartNodeKey, "节点数": len(nodes), "路径数": len(edges), })); err != nil { return err } for _, node := range nodes { if err := p.client.Upsert(ctx, p.tables.SOPNodes, id(node.ID), common(node.ID, node.TenantID, state, node.UpdatedAt, map[string]interface{}{ - "SOP版本来源ID": id(version.ID), "节点标识": node.NodeKey, "节点类型": node.Type, "标题": node.Title, "标准话术或操作提示": clip(node.Content), "配置": jsonText(node.Config), "排序": node.PositionY, + "SOP来源ID": id(sop.ID), "节点标识": node.NodeKey, "节点类型": node.Type, "标题": node.Title, "标准话术或操作提示": clip(node.Content), "配置": jsonText(node.Config), "排序": node.PositionY, })); err != nil { return err } } for _, edge := range edges { if err := p.client.Upsert(ctx, p.tables.SOPEdges, id(edge.ID), common(edge.ID, edge.TenantID, state, edge.UpdatedAt, map[string]interface{}{ - "SOP版本来源ID": id(version.ID), "起点节点标识": edge.SourceNodeKey, "终点节点标识": edge.TargetNodeKey, "条件": jsonText(edge.Condition), "优先级": edge.Priority, + "SOP来源ID": id(sop.ID), "起点节点标识": edge.SourceNodeKey, "终点节点标识": edge.TargetNodeKey, "条件": jsonText(edge.Condition), "优先级": edge.Priority, })); err != nil { return err } @@ -264,7 +251,7 @@ func (p *Projector) run(ctx context.Context, event model.MultiTableOutbox) error _ = json.Unmarshal(row.Answers, &answers) answerCount = len(answers) return p.client.Upsert(ctx, p.tables.Runs, id(row.ID), common(row.ID, row.TenantID, "正常", row.UpdatedAt, map[string]interface{}{ - "SOP来源ID": id(row.SOPID), "SOP版本来源ID": id(row.SOPVersionID), "场景名称": row.ScenarioName, "执行人ID": id(row.OperatorID), "执行状态": row.Status, "执行结果": row.Result, "最终结果": jsonText(row.FinalResult), "已采集字段数": answerCount, "开始时间": formatTime(&row.StartedAt), "完成时间": formatTime(row.CompletedAt), + "SOP来源ID": id(row.SOPID), "场景名称": row.ScenarioName, "执行人ID": id(row.OperatorID), "执行状态": row.Status, "执行结果": row.Result, "最终结果": jsonText(row.FinalResult), "已采集字段数": answerCount, "开始时间": formatTime(&row.StartedAt), "完成时间": formatTime(row.CompletedAt), })) } diff --git a/internal/run/detail.go b/internal/run/detail.go index c84355d..0af6eb7 100644 --- a/internal/run/detail.go +++ b/internal/run/detail.go @@ -24,7 +24,6 @@ type DetailEvent struct { NodeType string `json:"node_type"` NodeContent string `json:"node_content"` NodeConfig datatypes.JSON `json:"-"` - Knowledge *KnowledgeView `json:"knowledge,omitempty" gorm:"-"` Outputs []KnowledgeGroup `json:"outputs,omitempty" gorm:"-"` } @@ -48,11 +47,10 @@ func (h *Handler) Detail(c *gin.Context) { return } events := make([]DetailEvent, 0) - if err := h.db.Table("sop_run_events e").Select("e.*, n.title AS node_title, n.type AS node_type, n.content AS node_content, n.config AS node_config").Joins("LEFT JOIN sop_nodes n ON n.sop_version_id = ? AND n.node_key = e.node_key", header.SOPVersionID).Where("e.run_id = ? AND e.tenant_id = ?", id, principal.TenantID).Order("e.created_at, e.id").Scan(&events).Error; err != nil { + if err := h.db.Table("sop_run_events e").Select("e.*, n.title AS node_title, n.type AS node_type, n.content AS node_content, n.config AS node_config").Joins("LEFT JOIN sop_nodes n ON n.sop_id = ? AND n.node_key = e.node_key", header.SOPID).Where("e.run_id = ? AND e.tenant_id = ?", id, principal.TenantID).Order("e.created_at, e.id").Scan(&events).Error; err != nil { response.Error(c, http.StatusInternalServerError, "QUERY_FAILED", "查询执行事件失败") return } - knowledgeCache := map[string]*KnowledgeView{} answers := map[string]interface{}{} _ = json.Unmarshal(header.Answers, &answers) derived := map[string]interface{}{} @@ -65,32 +63,21 @@ func (h *Handler) Detail(c *gin.Context) { if events[i].NodeType != "knowledge" { continue } - cacheKey := string(events[i].NodeConfig) - if cached, ok := knowledgeCache[cacheKey]; ok { - events[i].Knowledge = cached - continue - } var config knowledgeNodeConfig _ = json.Unmarshal(events[i].NodeConfig, &config) - if config.KnowledgeSelector != nil { - var node model.SOPNode - if err := h.db.Where("sop_version_id = ? AND node_key = ?", header.SOPVersionID, events[i].NodeKey).First(&node).Error; err == nil { - outputs, loadErr := loadKnowledgeOutputs(h.db, node, principal.TenantID, context, *config.KnowledgeSelector) - if loadErr != nil { - response.Error(c, http.StatusInternalServerError, "KNOWLEDGE_NOT_FOUND", "执行记录知识快照不可用") - return - } - events[i].Outputs = outputs - } + if config.KnowledgeSelector == nil { continue } - knowledge, err := loadKnowledgeView(h.db, model.SOPNode{Type: events[i].NodeType, Config: events[i].NodeConfig}, principal.TenantID, answers) - if err != nil { - response.Error(c, http.StatusInternalServerError, "KNOWLEDGE_NOT_FOUND", "执行记录关联的历史知识内容不存在") + var node model.SOPNode + if err := h.db.Where("sop_id = ? AND node_key = ?", header.SOPID, events[i].NodeKey).First(&node).Error; err != nil { + continue + } + outputs, loadErr := loadKnowledgeOutputs(h.db, node, principal.TenantID, context, *config.KnowledgeSelector) + if loadErr != nil { + response.Error(c, http.StatusInternalServerError, "KNOWLEDGE_NOT_FOUND", "执行记录知识快照不可用") return } - events[i].Knowledge = &knowledge - knowledgeCache[cacheKey] = &knowledge + events[i].Outputs = outputs } feedback := make([]DetailFeedback, 0) if err := h.db.Table("sop_feedback f").Select("f.*, u.display_name AS user_name").Joins("JOIN users u ON u.id = f.user_id").Where("f.run_id = ? AND f.tenant_id = ?", id, principal.TenantID).Order("f.created_at").Scan(&feedback).Error; err != nil { diff --git a/internal/run/handler.go b/internal/run/handler.go index 3927fde..2c60cdc 100644 --- a/internal/run/handler.go +++ b/internal/run/handler.go @@ -51,7 +51,7 @@ func (h *Handler) AvailableSOPs(c *gin.Context) { ScenarioName string `json:"scenario_name"` } items := make([]item, 0) - query := h.db.Table("sops s").Select("s.id, s.name, s.description, s.scenario_id, sc.name AS scenario_name").Joins("JOIN scenarios sc ON sc.id = s.scenario_id").Joins("JOIN sop_versions sv ON sv.sop_id = s.id AND sv.status = ?", "published") + query := h.db.Table("sops s").Select("s.id, s.name, s.description, s.scenario_id, sc.name AS scenario_name").Joins("JOIN scenarios sc ON sc.id = s.scenario_id") query = access.ScopeScenarios(query, p, "sc") err := query.Where("s.tenant_id = ? AND s.status = ?", p.TenantID, "published").Order("s.updated_at DESC").Scan(&items).Error if err != nil { @@ -89,8 +89,8 @@ func (h *Handler) Start(c *gin.Context) { return } } - var version model.SOPVersion - if err := h.db.Where("sop_id = ? AND tenant_id = ? AND status = ?", input.SOPID, p.TenantID, "published").Order("version DESC").First(&version).Error; err != nil { + var sop model.SOP + if err := h.db.Where("id = ? AND tenant_id = ? AND status = ?", input.SOPID, p.TenantID, "published").First(&sop).Error; err != nil { response.Error(c, http.StatusNotFound, "NOT_FOUND", "没有可执行的 SOP") return } @@ -99,11 +99,7 @@ func (h *Handler) Start(c *gin.Context) { response.Error(c, http.StatusInternalServerError, "QUERY_FAILED", "查询场景字段失败") return } - var sopItem model.SOP - if err := h.db.Where("id = ? AND tenant_id = ?", input.SOPID, p.TenantID).First(&sopItem).Error; err != nil { - response.Error(c, http.StatusNotFound, "NOT_FOUND", "SOP 不存在") - return - } + var sopItem = sop if input.Input == nil { input.Input = map[string]interface{}{} } @@ -138,7 +134,7 @@ func (h *Handler) Start(c *gin.Context) { if externalRef == "" { externalRef = "run-" + uuid.NewString() } - run := model.SOPRun{TenantID: p.TenantID, SOPID: input.SOPID, SOPVersionID: version.ID, OperatorID: p.UserID, ExternalRef: externalRef, CurrentNodeKey: version.StartNodeKey, Status: "running", Answers: datatypes.JSON(initialAnswers), Input: datatypes.JSON(initialAnswers), Derived: datatypes.JSON(derivedRaw), Outputs: datatypes.JSON([]byte(`[]`)), KnowledgeSnapshot: datatypes.JSON(knowledgeRaw), Result: "", StartedAt: time.Now()} + run := model.SOPRun{TenantID: p.TenantID, SOPID: input.SOPID, OperatorID: p.UserID, ExternalRef: externalRef, CurrentNodeKey: sop.StartNodeKey, Status: "running", Answers: datatypes.JSON(initialAnswers), Input: datatypes.JSON(initialAnswers), Derived: datatypes.JSON(derivedRaw), Outputs: datatypes.JSON([]byte(`[]`)), KnowledgeSnapshot: datatypes.JSON(knowledgeRaw), Result: "", StartedAt: time.Now()} err = h.db.Transaction(func(tx *gorm.DB) error { if err := tx.Create(&run).Error; err != nil { return err @@ -208,7 +204,7 @@ func (h *Handler) List(c *gin.Context) { items := make([]listItem, 0) // The run payload contains several large JSON snapshots. The history list only // needs scalar metadata; excluding blobs keeps MySQL's sort buffer bounded. - listColumns := "r.id, r.created_at, r.updated_at, r.tenant_id, r.sop_id, r.sop_version_id, r.operator_id, r.external_ref, r.current_node_key, r.status, r.result, r.started_at, r.completed_at, s.name AS sop_name, sc.name AS scenario_name, u.display_name AS operator_name" + listColumns := "r.id, r.created_at, r.updated_at, r.tenant_id, r.sop_id, r.operator_id, r.external_ref, r.current_node_key, r.status, r.result, r.started_at, r.completed_at, s.name AS sop_name, sc.name AS scenario_name, u.display_name AS operator_name" if err := query.Select(listColumns).Order("r.created_at DESC, r.id DESC").Offset((page - 1) * pageSize).Limit(pageSize).Scan(&items).Error; err != nil { response.Error(c, http.StatusInternalServerError, "QUERY_FAILED", "查询执行记录失败") return @@ -268,7 +264,7 @@ func (h *Handler) Answer(c *gin.Context) { return errors.New("当前步骤已经变化,请刷新后重试") } var currentNode model.SOPNode - if err := tx.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", updated.SOPVersionID, updated.CurrentNodeKey, p.TenantID).First(¤tNode).Error; err != nil { + if err := tx.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", updated.SOPID, updated.CurrentNodeKey, p.TenantID).First(¤tNode).Error; err != nil { return err } fields := make([]model.ScenarioField, 0) @@ -289,7 +285,7 @@ func (h *Handler) Answer(c *gin.Context) { return err } var edges []model.SOPEdge - if err := tx.Where("sop_version_id = ? AND source_node_key = ?", updated.SOPVersionID, updated.CurrentNodeKey).Order("priority, id").Find(&edges).Error; err != nil { + if err := tx.Where("sop_id = ? AND source_node_key = ? AND tenant_id = ?", updated.SOPID, updated.CurrentNodeKey, p.TenantID).Order("priority, id").Find(&edges).Error; err != nil { return err } sortEdges(edges) @@ -313,7 +309,7 @@ func (h *Handler) Answer(c *gin.Context) { return err } var next model.SOPNode - if err := tx.Where("sop_version_id = ? AND node_key = ?", updated.SOPVersionID, nextKey).First(&next).Error; err != nil { + if err := tx.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", updated.SOPID, nextKey, p.TenantID).First(&next).Error; err != nil { return err } updates := map[string]interface{}{"current_node_key": nextKey, "answers": datatypes.JSON(answerBytes)} @@ -492,7 +488,7 @@ func (h *Handler) Feedback(c *gin.Context) { func (h *Handler) respondRun(c *gin.Context, item model.SOPRun) { var node model.SOPNode - if err := h.db.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", item.SOPVersionID, item.CurrentNodeKey, item.TenantID).First(&node).Error; err != nil { + if err := h.db.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", item.SOPID, item.CurrentNodeKey, item.TenantID).First(&node).Error; err != nil { response.Error(c, http.StatusInternalServerError, "NODE_NOT_FOUND", "当前流程节点不存在") return } diff --git a/internal/run/knowledge.go b/internal/run/knowledge.go index 5b64ffe..48f64e9 100644 --- a/internal/run/knowledge.go +++ b/internal/run/knowledge.go @@ -7,30 +7,12 @@ import ( "sort" "strings" - knowledgecontent "git.iwork-ai.com/xdc/iqudo-top1/internal/knowledge" "git.iwork-ai.com/xdc/iqudo-top1/internal/model" "gorm.io/gorm" ) var knowledgePlaceholderPattern = regexp.MustCompile(`\{\{\s*(?:input|derived|form)\.([A-Za-z][A-Za-z0-9_]*)\s*\}\}`) -type KnowledgeView struct { - CardID uint64 `json:"card_id"` - CardVersionID uint64 `json:"card_version_id"` - Version int `json:"version"` - Title string `json:"title"` - StandardCopy string `json:"standard_copy"` - ForbiddenCopy string `json:"forbidden_copy"` - RiskNote string `json:"risk_note"` - Copies []KnowledgeCopy `json:"copies"` -} - -type KnowledgeCopy struct { - ID string `json:"id"` - Title string `json:"title"` - Content string `json:"content"` -} - type NodeView struct { NodeKey string `json:"node_key"` Type string `json:"type"` @@ -39,7 +21,6 @@ type NodeView struct { Config json.RawMessage `json:"config,omitempty"` Fields []PublicFieldView `json:"fields,omitempty"` Presentation *NodePresentation `json:"presentation,omitempty"` - Knowledge *KnowledgeView `json:"knowledge,omitempty"` Outputs []KnowledgeGroup `json:"outputs"` Collection *KnowledgeCollectionView `json:"collection,omitempty"` } @@ -70,10 +51,8 @@ type KnowledgeItemView struct { } type knowledgeNodeConfig struct { - KnowledgeCardID uint64 `json:"knowledge_card_id"` - KnowledgeCardVersionID uint64 `json:"knowledge_card_version_id"` - KnowledgeSelector *knowledgeSelector `json:"knowledge_selector"` - KnowledgeCollection *knowledgeCollectionConfig `json:"knowledge_collection"` + KnowledgeSelector *knowledgeSelector `json:"knowledge_selector"` + KnowledgeCollection *knowledgeCollectionConfig `json:"knowledge_collection"` } type knowledgeCollectionConfig struct { @@ -168,11 +147,6 @@ func (h *Handler) nodeView(db *gorm.DB, node model.SOPNode, tenantID uint64, ans } return view, nil } - knowledge, err := loadKnowledgeView(db, node, tenantID, answers) - if err != nil { - return view, err - } - view.Knowledge = &knowledge return view, nil } @@ -272,7 +246,7 @@ func loadPublicFieldsByKeys(db *gorm.DB, node model.SOPNode, tenantID uint64, ke return []PublicFieldView{}, nil } var fields []model.ScenarioField - if err := db.Table("scenario_fields sf").Select("sf.*").Joins("JOIN sops s ON s.scenario_id = sf.scenario_id").Joins("JOIN sop_versions sv ON sv.sop_id = s.id").Where("sv.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPVersionID, tenantID, keys).Find(&fields).Error; err != nil { + if err := db.Table("scenario_fields sf").Select("sf.*").Joins("JOIN sops s ON s.scenario_id = sf.scenario_id").Where("s.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPID, tenantID, keys).Find(&fields).Error; err != nil { return nil, err } byKey := map[string]model.ScenarioField{} @@ -310,7 +284,7 @@ func loadPublicNodeFields(db *gorm.DB, node model.SOPNode, tenantID uint64) ([]P return nil, nil } var fields []model.ScenarioField - if err := db.Table("scenario_fields sf").Select("sf.*").Joins("JOIN sops s ON s.scenario_id = sf.scenario_id").Joins("JOIN sop_versions sv ON sv.sop_id = s.id").Where("sv.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPVersionID, tenantID, keys).Find(&fields).Error; err != nil { + if err := db.Table("scenario_fields sf").Select("sf.*").Joins("JOIN sops s ON s.scenario_id = sf.scenario_id").Where("s.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPID, tenantID, keys).Find(&fields).Error; err != nil { return nil, err } byKey := make(map[string]model.ScenarioField, len(fields)) @@ -330,7 +304,7 @@ func loadPublicNodeFields(db *gorm.DB, node model.SOPNode, tenantID uint64) ([]P func loadKnowledgeOutputs(db *gorm.DB, node model.SOPNode, tenantID uint64, context map[string]interface{}, selector knowledgeSelector) ([]KnowledgeGroup, error) { var sopRow struct{ ScenarioID uint64 } - if err := db.Table("sop_nodes n").Select("s.scenario_id").Joins("JOIN sop_versions sv ON sv.id = n.sop_version_id").Joins("JOIN sops s ON s.id = sv.sop_id").Where("n.id = ? AND n.tenant_id = ?", node.ID, tenantID).Scan(&sopRow).Error; err != nil { + if err := db.Table("sop_nodes n").Select("s.scenario_id").Joins("JOIN sops s ON s.id = n.sop_id").Where("n.id = ? AND n.tenant_id = ?", node.ID, tenantID).Scan(&sopRow).Error; err != nil { return nil, err } return loadKnowledgeOutputsForScenario(db, sopRow.ScenarioID, tenantID, context, selector) @@ -534,43 +508,3 @@ func stringSlice(value interface{}) []string { } return result } - -func loadKnowledgeView(db *gorm.DB, node model.SOPNode, tenantID uint64, answers map[string]interface{}) (KnowledgeView, error) { - var config knowledgeNodeConfig - if err := json.Unmarshal(node.Config, &config); err != nil { - return KnowledgeView{}, err - } - type row struct { - model.KnowledgeCardVersion - Title string `gorm:"column:title"` - } - var version row - query := db.Table("knowledge_card_versions kv").Select("kv.*, kc.title"). - Joins("JOIN knowledge_cards kc ON kc.id = kv.knowledge_card_id"). - Where("kv.tenant_id = ? AND kc.tenant_id = ? AND kv.knowledge_card_id = ?", tenantID, tenantID, config.KnowledgeCardID) - if config.KnowledgeCardVersionID != 0 { - query = query.Where("kv.id = ?", config.KnowledgeCardVersionID) - } else { - query = query.Where("kv.status = ?", "published").Order("kv.version DESC") - } - if err := query.First(&version).Error; err != nil { - return KnowledgeView{}, err - } - content, err := knowledgecontent.ParseContent(version.Content) - if err != nil { - return KnowledgeView{}, err - } - rendered := knowledgecontent.Render(content, answers) - copies := make([]KnowledgeCopy, 0, len(rendered)) - for _, copy := range rendered { - copies = append(copies, KnowledgeCopy{ID: copy.ID, Title: copy.Title, Content: copy.Content}) - } - standardCopy := "" - if len(copies) > 0 { - standardCopy = copies[0].Content - } - return KnowledgeView{ - CardID: version.KnowledgeCardID, CardVersionID: version.ID, Version: version.Version, Title: version.Title, - StandardCopy: standardCopy, ForbiddenCopy: content.ForbiddenCopy, RiskNote: content.RiskNote, Copies: copies, - }, nil -} diff --git a/internal/run/node_view_test.go b/internal/run/node_view_test.go index 9814777..3cb4bf4 100644 --- a/internal/run/node_view_test.go +++ b/internal/run/node_view_test.go @@ -14,7 +14,7 @@ func TestNodeViewDoesNotExposeInternalSnapshotFields(t *testing.T) { if err := json.Unmarshal(raw, &value); err != nil { t.Fatal(err) } - for _, key := range []string{"id", "tenant_id", "sop_version_id", "config", "position_x", "position_y"} { + for _, key := range []string{"id", "tenant_id", "sop_id", "sop_version_id", "config", "position_x", "position_y"} { if _, exists := value[key]; exists { t.Fatalf("public node contains internal field %s: %s", key, raw) } diff --git a/internal/run/public.go b/internal/run/public.go index 7051574..821c389 100644 --- a/internal/run/public.go +++ b/internal/run/public.go @@ -65,11 +65,6 @@ func (h *Handler) PublicStart(c *gin.Context) { return } } - var version model.SOPVersion - if err := h.db.Where("sop_id = ? AND tenant_id = ? AND status = ?", sop.ID, scenario.TenantID, "published").Order("version DESC").First(&version).Error; err != nil { - response.Error(c, http.StatusNotFound, "SOP_NOT_FOUND", "场景没有可执行的 SOP") - return - } fields := make([]model.ScenarioField, 0) if err := h.db.Where("scenario_id = ? AND tenant_id = ?", scenario.ID, scenario.TenantID).Order("sort_order, id").Find(&fields).Error; err != nil { response.Error(c, http.StatusInternalServerError, "QUERY_FAILED", "查询场景契约失败") @@ -96,7 +91,7 @@ func (h *Handler) PublicStart(c *gin.Context) { if externalRef == "" { externalRef = "run-" + uuid.NewString() } - run := model.SOPRun{TenantID: scenario.TenantID, SOPID: sop.ID, SOPVersionID: version.ID, OperatorID: scenario.CreatedBy, ExternalRef: externalRef, CurrentNodeKey: version.StartNodeKey, Status: "running", Answers: datatypes.JSON(raw), Input: datatypes.JSON(raw), Derived: datatypes.JSON(derivedRaw), Outputs: datatypes.JSON([]byte(`[]`)), KnowledgeSnapshot: datatypes.JSON(knowledgeRaw), StartedAt: time.Now()} + run := model.SOPRun{TenantID: scenario.TenantID, SOPID: sop.ID, OperatorID: scenario.CreatedBy, ExternalRef: externalRef, CurrentNodeKey: sop.StartNodeKey, Status: "running", Answers: datatypes.JSON(raw), Input: datatypes.JSON(raw), Derived: datatypes.JSON(derivedRaw), Outputs: datatypes.JSON([]byte(`[]`)), KnowledgeSnapshot: datatypes.JSON(knowledgeRaw), StartedAt: time.Now()} token := uuid.NewString() + uuid.NewString() err = h.db.Transaction(func(tx *gorm.DB) error { if err := tx.Create(&run).Error; err != nil { @@ -162,7 +157,7 @@ func (h *Handler) PublicSubmit(c *gin.Context) { return errPublicNodeChanged } var node model.SOPNode - if err := tx.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", run.SOPVersionID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { + if err := tx.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", run.SOPID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { return err } fields := make([]model.ScenarioField, 0) @@ -212,7 +207,7 @@ func (h *Handler) PublicNext(c *gin.Context) { return errPublicRunCompleted } var node model.SOPNode - if err := tx.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", run.SOPVersionID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { + if err := tx.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", run.SOPID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { return err } if node.Type == "question" || node.Type == "choice" || node.Type == "form" { @@ -305,11 +300,11 @@ func (h *Handler) PublicReset(c *gin.Context) { if err := lockPublicRun(tx, session, &run); err != nil { return err } - var version model.SOPVersion - if err := tx.Where("id = ? AND tenant_id = ?", run.SOPVersionID, run.TenantID).First(&version).Error; err != nil { + var sop model.SOP + if err := tx.Where("id = ? AND tenant_id = ?", run.SOPID, run.TenantID).First(&sop).Error; err != nil { return err } - run.CurrentNodeKey, run.Status, run.Result, run.FinalResult, run.CompletedAt, run.Answers = version.StartNodeKey, "running", "", nil, nil, run.Input + run.CurrentNodeKey, run.Status, run.Result, run.FinalResult, run.CompletedAt, run.Answers = sop.StartNodeKey, "running", "", nil, nil, run.Input if err := tx.Model(&run).Updates(map[string]interface{}{"current_node_key": run.CurrentNodeKey, "status": run.Status, "result": run.Result, "final_result": nil, "completed_at": nil, "answers": run.Input, "outputs": datatypes.JSON([]byte(`[]`))}).Error; err != nil { return err } @@ -327,7 +322,7 @@ func (h *Handler) PublicReset(c *gin.Context) { func advancePublicRun(tx *gorm.DB, run *model.SOPRun) error { var edges []model.SOPEdge - if err := tx.Where("sop_version_id = ? AND source_node_key = ? AND tenant_id = ?", run.SOPVersionID, run.CurrentNodeKey, run.TenantID).Order("priority,id").Find(&edges).Error; err != nil { + if err := tx.Where("sop_id = ? AND source_node_key = ? AND tenant_id = ?", run.SOPID, run.CurrentNodeKey, run.TenantID).Order("priority,id").Find(&edges).Error; err != nil { return err } answers := map[string]interface{}{} @@ -353,7 +348,7 @@ func advancePublicRun(tx *gorm.DB, run *model.SOPRun) error { return errors.New("没有满足条件的下一节点") } var next model.SOPNode - if err := tx.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", run.SOPVersionID, nextKey, run.TenantID).First(&next).Error; err != nil { + if err := tx.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", run.SOPID, nextKey, run.TenantID).First(&next).Error; err != nil { return err } updates := map[string]interface{}{"current_node_key": nextKey} @@ -398,7 +393,7 @@ func (h *Handler) respondPublicMutationError(c *gin.Context, err error, fallback func (h *Handler) respondPublicRun(c *gin.Context, run model.SOPRun, token string) { var node model.SOPNode - if err := h.db.Where("sop_version_id = ? AND node_key = ? AND tenant_id = ?", run.SOPVersionID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { + if err := h.db.Where("sop_id = ? AND node_key = ? AND tenant_id = ?", run.SOPID, run.CurrentNodeKey, run.TenantID).First(&node).Error; err != nil { response.Error(c, http.StatusInternalServerError, "NODE_NOT_FOUND", "当前流程节点不存在") return } diff --git a/internal/run/start_presentation.go b/internal/run/start_presentation.go index 6e0362f..c0eae0d 100644 --- a/internal/run/start_presentation.go +++ b/internal/run/start_presentation.go @@ -56,8 +56,7 @@ func loadStartPresentation(db *gorm.DB, node model.SOPNode, tenantID uint64, con if len(keys) > 0 { if err := db.Table("scenario_fields sf").Select("sf.*"). Joins("JOIN sops s ON s.scenario_id = sf.scenario_id"). - Joins("JOIN sop_versions sv ON sv.sop_id = s.id"). - Where("sv.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPVersionID, tenantID, keys). + Where("s.id = ? AND sf.tenant_id = ? AND sf.field_key IN ?", node.SOPID, tenantID, keys). Find(&fields).Error; err != nil { return nil, err } diff --git a/internal/scenario/references.go b/internal/scenario/references.go index 3e47137..c956df0 100644 --- a/internal/scenario/references.go +++ b/internal/scenario/references.go @@ -9,7 +9,7 @@ import ( func (h *Handler) fieldReferencedByReleasedSOP(scenarioID uint64, fieldKey string, tenantID uint64) bool { statuses := []string{"published", "offline", "superseded"} var nodes []model.SOPNode - err := h.db.Table("sop_nodes n").Select("n.*").Joins("JOIN sop_versions sv ON sv.id = n.sop_version_id").Joins("JOIN sops s ON s.id = sv.sop_id").Where("s.scenario_id = ? AND n.tenant_id = ? AND sv.status IN ?", scenarioID, tenantID, statuses).Scan(&nodes).Error + err := h.db.Table("sop_nodes n").Select("n.*").Joins("JOIN sops s ON s.id = n.sop_id").Where("s.scenario_id = ? AND n.tenant_id = ? AND s.status IN ?", scenarioID, tenantID, statuses).Scan(&nodes).Error if err != nil { return true } @@ -19,7 +19,7 @@ func (h *Handler) fieldReferencedByReleasedSOP(scenarioID uint64, fieldKey strin } } var edges []model.SOPEdge - err = h.db.Table("sop_edges e").Select("e.*").Joins("JOIN sop_versions sv ON sv.id = e.sop_version_id").Joins("JOIN sops s ON s.id = sv.sop_id").Where("s.scenario_id = ? AND e.tenant_id = ? AND sv.status IN ?", scenarioID, tenantID, statuses).Scan(&edges).Error + err = h.db.Table("sop_edges e").Select("e.*").Joins("JOIN sops s ON s.id = e.sop_id").Where("s.scenario_id = ? AND e.tenant_id = ? AND s.status IN ?", scenarioID, tenantID, statuses).Scan(&edges).Error if err != nil { return true } diff --git a/internal/sop/handler.go b/internal/sop/handler.go index 01d1830..0dd531a 100644 --- a/internal/sop/handler.go +++ b/internal/sop/handler.go @@ -96,27 +96,22 @@ func (h *Handler) Create(c *gin.Context) { return } var item model.SOP - var version model.SOPVersion err := h.db.Transaction(func(tx *gorm.DB) error { - item = model.SOP{TenantID: p.TenantID, ScenarioID: scenarioID, Name: input.Name, Description: input.Description, Status: "published", CreatedBy: p.UserID} + item = model.SOP{TenantID: p.TenantID, ScenarioID: scenarioID, Name: input.Name, Description: input.Description, Status: "published", CreatedBy: p.UserID, StartNodeKey: "start"} if err := tx.Create(&item).Error; err != nil { return err } - version = model.SOPVersion{TenantID: p.TenantID, SOPID: item.ID, Version: 1, Status: "published", StartNodeKey: "start", CreatedBy: p.UserID} - if err := tx.Create(&version).Error; err != nil { - return err - } nodes := []model.SOPNode{ - {TenantID: p.TenantID, SOPVersionID: version.ID, NodeKey: "start", Type: "start", Title: "开始", Content: "", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 0}, - {TenantID: p.TenantID, SOPVersionID: version.ID, NodeKey: "opening", Type: "message", Title: "开场", Content: "您好,我先了解一下具体情况。", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 120}, - {TenantID: p.TenantID, SOPVersionID: version.ID, NodeKey: "finish", Type: "finish", Title: "结束", Content: "本次沟通已完成。", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 240}, + {TenantID: p.TenantID, SOPID: item.ID, NodeKey: "start", Type: "start", Title: "开始", Content: "", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 0}, + {TenantID: p.TenantID, SOPID: item.ID, NodeKey: "opening", Type: "message", Title: "开场", Content: "您好,我先了解一下具体情况。", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 120}, + {TenantID: p.TenantID, SOPID: item.ID, NodeKey: "finish", Type: "finish", Title: "结束", Content: "本次沟通已完成。", Config: datatypes.JSON([]byte(`{}`)), PositionX: 0, PositionY: 240}, } if err := tx.Create(&nodes).Error; err != nil { return err } edges := []model.SOPEdge{ - {TenantID: p.TenantID, SOPVersionID: version.ID, SourceNodeKey: "start", TargetNodeKey: "opening", Condition: datatypes.JSON([]byte(`{}`)), Priority: 0}, - {TenantID: p.TenantID, SOPVersionID: version.ID, SourceNodeKey: "opening", TargetNodeKey: "finish", Condition: datatypes.JSON([]byte(`{}`)), Priority: 0}, + {TenantID: p.TenantID, SOPID: item.ID, SourceNodeKey: "start", TargetNodeKey: "opening", Condition: datatypes.JSON([]byte(`{}`)), Priority: 0}, + {TenantID: p.TenantID, SOPID: item.ID, SourceNodeKey: "opening", TargetNodeKey: "finish", Condition: datatypes.JSON([]byte(`{}`)), Priority: 0}, } if err := tx.Create(&edges).Error; err != nil { return err @@ -128,7 +123,7 @@ func (h *Handler) Create(c *gin.Context) { return } _ = audit.Record(h.db, p, "create", "sop", item.ID, input) - response.Created(c, gin.H{"sop": item, "edit": editState{StartNodeKey: version.StartNodeKey}}) + response.Created(c, gin.H{"sop": item, "edit": editState{StartNodeKey: item.StartNodeKey}}) } func (h *Handler) Get(c *gin.Context) { @@ -142,10 +137,9 @@ func (h *Handler) Get(c *gin.Context) { return } var item model.SOP - var version model.SOPVersion var nodes []model.SOPNode var edges []model.SOPEdge - item, version, nodes, edges, err := h.loadLatest(id, p.TenantID) + item, nodes, edges, err := h.load(id, p.TenantID) if err != nil { if errors.Is(err, gorm.ErrRecordNotFound) { response.Error(c, http.StatusNotFound, "NOT_FOUND", "SOP 不存在") @@ -154,7 +148,7 @@ func (h *Handler) Get(c *gin.Context) { } return } - response.OK(c, gin.H{"sop": item, "edit": editState{StartNodeKey: version.StartNodeKey}, "nodes": nodes, "edges": edges}) + response.OK(c, gin.H{"sop": item, "edit": editState{StartNodeKey: item.StartNodeKey}, "nodes": nodes, "edges": edges}) } func (h *Handler) SaveGraph(c *gin.Context) { @@ -172,12 +166,12 @@ func (h *Handler) SaveGraph(c *gin.Context) { response.Error(c, http.StatusBadRequest, "INVALID_ARGUMENT", "流程配置不完整") return } - item, version, _, _, err := h.loadLatest(id, p.TenantID) + item, _, _, err := h.load(id, p.TenantID) if err != nil { response.Error(c, http.StatusNotFound, "NOT_FOUND", "SOP 不存在") return } - nodes, edges := toModels(p.TenantID, version.ID, input) + nodes, edges := toModels(p.TenantID, id, input) problems, validationErr := h.validateForPublish(item, input.StartNodeKey, nodes, edges, p.TenantID) if validationErr != nil { response.Error(c, http.StatusInternalServerError, "VALIDATION_FAILED", "校验流程失败") @@ -188,10 +182,10 @@ func (h *Handler) SaveGraph(c *gin.Context) { return } err = h.db.Transaction(func(tx *gorm.DB) error { - if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPEdge{}).Error; err != nil { + if err := tx.Where("sop_id = ? AND tenant_id = ?", id, p.TenantID).Delete(&model.SOPEdge{}).Error; err != nil { return err } - if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPNode{}).Error; err != nil { + if err := tx.Where("sop_id = ? AND tenant_id = ?", id, p.TenantID).Delete(&model.SOPNode{}).Error; err != nil { return err } if err := tx.Create(&nodes).Error; err != nil { @@ -202,10 +196,7 @@ func (h *Handler) SaveGraph(c *gin.Context) { return err } } - if err := tx.Model(&model.SOPVersion{}).Where("sop_id = ? AND tenant_id = ? AND id <> ?", id, p.TenantID, version.ID).Update("status", "superseded").Error; err != nil { - return err - } - if err := tx.Model(&version).Updates(map[string]interface{}{"start_node_key": input.StartNodeKey, "status": "published"}).Error; err != nil { + if err := tx.Model(&item).Updates(map[string]interface{}{"start_node_key": input.StartNodeKey, "status": "published"}).Error; err != nil { return err } if err := tx.Model(&item).Update("status", "published").Error; err != nil { @@ -232,15 +223,14 @@ func (h *Handler) Validate(c *gin.Context) { return } var item model.SOP - var version model.SOPVersion var nodes []model.SOPNode var edges []model.SOPEdge - item, version, nodes, edges, err := h.loadLatest(id, p.TenantID) + item, nodes, edges, err := h.load(id, p.TenantID) if err != nil { response.Error(c, http.StatusNotFound, "NOT_FOUND", "SOP 不存在") return } - problems, err := h.validateForPublish(item, version.StartNodeKey, nodes, edges, p.TenantID) + problems, err := h.validateForPublish(item, item.StartNodeKey, nodes, edges, p.TenantID) if err != nil { response.Error(c, http.StatusInternalServerError, "VALIDATION_FAILED", "校验流程失败") return @@ -248,24 +238,20 @@ func (h *Handler) Validate(c *gin.Context) { response.OK(c, gin.H{"valid": len(problems) == 0, "problems": problems}) } -func (h *Handler) loadLatest(sopID, tenantID uint64) (model.SOP, model.SOPVersion, []model.SOPNode, []model.SOPEdge, error) { +func (h *Handler) load(sopID, tenantID uint64) (model.SOP, []model.SOPNode, []model.SOPEdge, error) { var item model.SOP if err := h.db.Where("id = ? AND tenant_id = ?", sopID, tenantID).First(&item).Error; err != nil { - return item, model.SOPVersion{}, nil, nil, err - } - var version model.SOPVersion - if err := h.db.Where("sop_id = ? AND tenant_id = ?", sopID, tenantID).Order("version DESC").First(&version).Error; err != nil { - return item, version, nil, nil, err + return item, nil, nil, err } nodes := make([]model.SOPNode, 0) edges := make([]model.SOPEdge, 0) - if err := h.db.Where("sop_version_id = ? AND tenant_id = ?", version.ID, tenantID).Order("position_y, id").Find(&nodes).Error; err != nil { - return item, version, nil, nil, err + if err := h.db.Where("sop_id = ? AND tenant_id = ?", sopID, tenantID).Order("position_y, id").Find(&nodes).Error; err != nil { + return item, nil, nil, err } - if err := h.db.Where("sop_version_id = ? AND tenant_id = ?", version.ID, tenantID).Order("priority, id").Find(&edges).Error; err != nil { - return item, version, nil, nil, err + if err := h.db.Where("sop_id = ? AND tenant_id = ?", sopID, tenantID).Order("priority, id").Find(&edges).Error; err != nil { + return item, nil, nil, err } - return item, version, nodes, edges, nil + return item, nodes, edges, nil } func (h *Handler) validateForPublish(item model.SOP, startNodeKey string, nodes []model.SOPNode, edges []model.SOPEdge, tenantID uint64) ([]string, error) { @@ -284,14 +270,14 @@ func (h *Handler) validateForPublish(item model.SOP, startNodeKey string, nodes return ValidateForPublish(startNodeKey, nodes, edges, ValidationContext{Fields: fields, KnowledgeItems: knowledgeItems, KnowledgeRelations: knowledgeRelations}), nil } -func toModels(tenantID, versionID uint64, input graphInput) ([]model.SOPNode, []model.SOPEdge) { +func toModels(tenantID, sopID uint64, input graphInput) ([]model.SOPNode, []model.SOPEdge) { nodes := make([]model.SOPNode, 0, len(input.Nodes)) for _, item := range input.Nodes { config := item.Config if len(config) == 0 || !json.Valid(config) { config = json.RawMessage(`{}`) } - nodes = append(nodes, model.SOPNode{TenantID: tenantID, SOPVersionID: versionID, NodeKey: item.NodeKey, Type: item.Type, Title: item.Title, Content: item.Content, Config: datatypes.JSON(config), PositionX: item.PositionX, PositionY: item.PositionY}) + nodes = append(nodes, model.SOPNode{TenantID: tenantID, SOPID: sopID, NodeKey: item.NodeKey, Type: item.Type, Title: item.Title, Content: item.Content, Config: datatypes.JSON(config), PositionX: item.PositionX, PositionY: item.PositionY}) } edges := make([]model.SOPEdge, 0, len(input.Edges)) for _, item := range input.Edges { @@ -299,7 +285,7 @@ func toModels(tenantID, versionID uint64, input graphInput) ([]model.SOPNode, [] if len(condition) == 0 || !json.Valid(condition) { condition = json.RawMessage(`{}`) } - edges = append(edges, model.SOPEdge{TenantID: tenantID, SOPVersionID: versionID, SourceNodeKey: item.SourceNodeKey, TargetNodeKey: item.TargetNodeKey, Condition: datatypes.JSON(condition), Priority: item.Priority}) + edges = append(edges, model.SOPEdge{TenantID: tenantID, SOPID: sopID, SourceNodeKey: item.SourceNodeKey, TargetNodeKey: item.TargetNodeKey, Condition: datatypes.JSON(condition), Priority: item.Priority}) } return nodes, edges } diff --git a/migrations/20260819_drop_sop_versions.sql b/migrations/20260819_drop_sop_versions.sql new file mode 100644 index 0000000..9f61691 --- /dev/null +++ b/migrations/20260819_drop_sop_versions.sql @@ -0,0 +1,127 @@ +-- Destructive cleanup for the SOP single-version migration. +-- Run only after the backfill script completed and all sop_id values are set. +-- The statements discover constraint/index names because deployments may use +-- different GORM naming conventions. + +-- The application does not use database foreign keys. Remove every existing +-- foreign key in the database first so no historical constraint remains and +-- no constraint blocks the old SOP column cleanup. +DROP PROCEDURE IF EXISTS drop_all_iqudo_foreign_keys; +DELIMITER // +CREATE PROCEDURE drop_all_iqudo_foreign_keys() +BEGIN + DECLARE finished INT DEFAULT 0; + DECLARE table_name_value VARCHAR(64); + DECLARE constraint_name_value VARCHAR(64); + DECLARE foreign_keys CURSOR FOR + SELECT TABLE_NAME, CONSTRAINT_NAME + FROM information_schema.TABLE_CONSTRAINTS + WHERE CONSTRAINT_SCHEMA = DATABASE() AND CONSTRAINT_TYPE = 'FOREIGN KEY'; + DECLARE CONTINUE HANDLER FOR NOT FOUND SET finished = 1; + + OPEN foreign_keys; + drop_loop: LOOP + FETCH foreign_keys INTO table_name_value, constraint_name_value; + IF finished = 1 THEN + LEAVE drop_loop; + END IF; + SET @sql = CONCAT('ALTER TABLE `', table_name_value, '` DROP FOREIGN KEY `', constraint_name_value, '`'); + PREPARE stmt_all_fk FROM @sql; + EXECUTE stmt_all_fk; + DEALLOCATE PREPARE stmt_all_fk; + END LOOP; + CLOSE foreign_keys; +END// +DELIMITER ; +CALL drop_all_iqudo_foreign_keys(); +DROP PROCEDURE drop_all_iqudo_foreign_keys; + +-- The following blocks are retained as idempotent guards for databases where +-- a concurrent/manual migration changed the schema between the procedure and +-- the SOP cleanup statements. +-- Remove foreign keys on the old sop_version_id columns, if present. +SET @fk = ( + SELECT kcu.CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE kcu + WHERE kcu.CONSTRAINT_SCHEMA = DATABASE() AND kcu.TABLE_NAME = 'sop_nodes' + AND kcu.COLUMN_NAME = 'sop_version_id' AND kcu.REFERENCED_TABLE_NAME = 'sop_versions' LIMIT 1 +); +SET @sql = IF(@fk IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_nodes DROP FOREIGN KEY `', @fk, '`')); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @fk = ( + SELECT kcu.CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE kcu + WHERE kcu.CONSTRAINT_SCHEMA = DATABASE() AND kcu.TABLE_NAME = 'sop_edges' + AND kcu.COLUMN_NAME = 'sop_version_id' AND kcu.REFERENCED_TABLE_NAME = 'sop_versions' LIMIT 1 +); +SET @sql = IF(@fk IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_edges DROP FOREIGN KEY `', @fk, '`')); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @fk = ( + SELECT kcu.CONSTRAINT_NAME FROM information_schema.KEY_COLUMN_USAGE kcu + WHERE kcu.CONSTRAINT_SCHEMA = DATABASE() AND kcu.TABLE_NAME = 'sop_runs' + AND kcu.COLUMN_NAME = 'sop_version_id' AND kcu.REFERENCED_TABLE_NAME = 'sop_versions' LIMIT 1 +); +SET @sql = IF(@fk IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_runs DROP FOREIGN KEY `', @fk, '`')); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- Drop indexes containing the old column, regardless of their names. +SET @indexes = ( + SELECT GROUP_CONCAT(DISTINCT CONCAT('DROP INDEX `', INDEX_NAME, '`') SEPARATOR ', ') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_nodes' + AND COLUMN_NAME = 'sop_version_id' AND INDEX_NAME <> 'PRIMARY' +); +SET @sql = IF(@indexes IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_nodes ', @indexes)); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @indexes = ( + SELECT GROUP_CONCAT(DISTINCT CONCAT('DROP INDEX `', INDEX_NAME, '`') SEPARATOR ', ') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_edges' + AND COLUMN_NAME = 'sop_version_id' AND INDEX_NAME <> 'PRIMARY' +); +SET @sql = IF(@indexes IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_edges ', @indexes)); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @indexes = ( + SELECT GROUP_CONCAT(DISTINCT CONCAT('DROP INDEX `', INDEX_NAME, '`') SEPARATOR ', ') + FROM information_schema.STATISTICS + WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_runs' + AND COLUMN_NAME = 'sop_version_id' AND INDEX_NAME <> 'PRIMARY' +); +SET @sql = IF(@indexes IS NULL, 'SELECT 1', CONCAT('ALTER TABLE sop_runs ', @indexes)); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- Add replacement indexes once. +SET @sql = IF( + EXISTS (SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_nodes' AND INDEX_NAME = 'uk_sop_nodes_key'), + 'SELECT 1', 'ALTER TABLE sop_nodes ADD UNIQUE KEY uk_sop_nodes_key (sop_id, node_key)' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = IF( + EXISTS (SELECT 1 FROM information_schema.STATISTICS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_edges' AND INDEX_NAME = 'idx_sop_edges_source'), + 'SELECT 1', 'ALTER TABLE sop_edges ADD INDEX idx_sop_edges_source (sop_id, source_node_key, priority)' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +-- Drop old columns only when they still exist. +SET @sql = IF( + EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_nodes' AND COLUMN_NAME = 'sop_version_id'), + 'ALTER TABLE sop_nodes DROP COLUMN sop_version_id', 'SELECT 1' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = IF( + EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_edges' AND COLUMN_NAME = 'sop_version_id'), + 'ALTER TABLE sop_edges DROP COLUMN sop_version_id', 'SELECT 1' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +SET @sql = IF( + EXISTS (SELECT 1 FROM information_schema.COLUMNS WHERE TABLE_SCHEMA = DATABASE() AND TABLE_NAME = 'sop_runs' AND COLUMN_NAME = 'sop_version_id'), + 'ALTER TABLE sop_runs DROP COLUMN sop_version_id', 'SELECT 1' +); +PREPARE stmt FROM @sql; EXECUTE stmt; DEALLOCATE PREPARE stmt; + +DROP TABLE IF EXISTS sop_versions; diff --git a/migrations/20260819_remove_sop_versions.sql b/migrations/20260819_remove_sop_versions.sql new file mode 100644 index 0000000..145de34 --- /dev/null +++ b/migrations/20260819_remove_sop_versions.sql @@ -0,0 +1,134 @@ +-- Run this once on an existing MySQL database before deploying the +-- single-version SOP application. It is intentionally explicit: the Go +-- service only performs the data-preserving backfill and does not drop data. + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sops ADD COLUMN start_node_key VARCHAR(64) NOT NULL DEFAULT ''start''', + 'SELECT 1') + FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'sops' AND column_name = 'start_node_key' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +UPDATE sops s +JOIN ( + SELECT sop_id, MAX(id) AS version_id + FROM sop_versions + WHERE status = 'published' + GROUP BY sop_id +) current ON current.sop_id = s.id +JOIN sop_versions sv ON sv.id = current.version_id +SET s.start_node_key = COALESCE(NULLIF(sv.start_node_key, ''), NULLIF(s.start_node_key, ''), 'start'); + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_nodes ADD COLUMN sop_id BIGINT UNSIGNED NULL', + 'SELECT 1') + FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'sop_nodes' AND column_name = 'sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_edges ADD COLUMN sop_id BIGINT UNSIGNED NULL', + 'SELECT 1') + FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'sop_edges' AND column_name = 'sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_runs ADD COLUMN sop_id BIGINT UNSIGNED NULL', + 'SELECT 1') + FROM information_schema.columns + WHERE table_schema = DATABASE() AND table_name = 'sop_runs' AND column_name = 'sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +UPDATE sop_nodes n JOIN sop_versions sv ON sv.id = n.sop_version_id +SET n.sop_id = sv.sop_id WHERE n.sop_id IS NULL; +UPDATE sop_edges e JOIN sop_versions sv ON sv.id = e.sop_version_id +SET e.sop_id = sv.sop_id WHERE e.sop_id IS NULL; +UPDATE sop_runs r JOIN sop_versions sv ON sv.id = r.sop_version_id +SET r.sop_id = sv.sop_id WHERE r.sop_id IS NULL; + +-- A single-version SOP can only have one graph. Keep the latest published +-- version's nodes and edges; remove historical graph rows after the backup. +DELETE n +FROM sop_nodes n +JOIN sop_versions sv ON sv.id = n.sop_version_id +JOIN ( + SELECT sop_id, MAX(id) AS version_id + FROM sop_versions + WHERE status = 'published' + GROUP BY sop_id +) current ON current.sop_id = sv.sop_id +WHERE sv.id <> current.version_id; + +DELETE e +FROM sop_edges e +JOIN sop_versions sv ON sv.id = e.sop_version_id +JOIN ( + SELECT sop_id, MAX(id) AS version_id + FROM sop_versions + WHERE status = 'published' + GROUP BY sop_id +) current ON current.sop_id = sv.sop_id +WHERE sv.id <> current.version_id; + +ALTER TABLE sop_nodes MODIFY COLUMN sop_id BIGINT UNSIGNED NOT NULL; +ALTER TABLE sop_edges MODIFY COLUMN sop_id BIGINT UNSIGNED NOT NULL; +ALTER TABLE sop_runs MODIFY COLUMN sop_id BIGINT UNSIGNED NOT NULL; + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_nodes ADD INDEX idx_sop_nodes_sop_id (sop_id)', + 'SELECT 1') + FROM information_schema.statistics + WHERE table_schema = DATABASE() AND table_name = 'sop_nodes' AND index_name = 'idx_sop_nodes_sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_edges ADD INDEX idx_sop_edges_sop_id (sop_id)', + 'SELECT 1') + FROM information_schema.statistics + WHERE table_schema = DATABASE() AND table_name = 'sop_edges' AND index_name = 'idx_sop_edges_sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +SET @sql = ( + SELECT IF(COUNT(*) = 0, + 'ALTER TABLE sop_runs ADD INDEX idx_sop_runs_sop_id (sop_id)', + 'SELECT 1') + FROM information_schema.statistics + WHERE table_schema = DATABASE() AND table_name = 'sop_runs' AND index_name = 'idx_sop_runs_sop_id' +); +PREPARE stmt FROM @sql; +EXECUTE stmt; +DEALLOCATE PREPARE stmt; + +-- Verify the backfill before the destructive cleanup below. +SELECT COUNT(*) AS nodes_without_sop FROM sop_nodes WHERE sop_id IS NULL; +SELECT COUNT(*) AS edges_without_sop FROM sop_edges WHERE sop_id IS NULL; +SELECT COUNT(*) AS runs_without_sop FROM sop_runs WHERE sop_id IS NULL; + +-- After the three counts above are all zero, remove the old version fields. +-- The old columns/table are intentionally retained by this backfill step. +-- Run 20260819_drop_sop_versions.sql only after all three counts above are 0. diff --git a/migrations/20260820_drop_legacy_knowledge_cards.sql b/migrations/20260820_drop_legacy_knowledge_cards.sql new file mode 100644 index 0000000..1a0e740 --- /dev/null +++ b/migrations/20260820_drop_legacy_knowledge_cards.sql @@ -0,0 +1,4 @@ +-- The scenario knowledge graph uses knowledge_items and knowledge_relations. +-- These legacy knowledge-card tables are no longer used by the application. +DROP TABLE IF EXISTS knowledge_card_versions; +DROP TABLE IF EXISTS knowledge_cards; diff --git a/scripts/seed-pet-doctor/main.go b/scripts/seed-pet-doctor/main.go index 88b22cd..43e74b0 100644 --- a/scripts/seed-pet-doctor/main.go +++ b/scripts/seed-pet-doctor/main.go @@ -291,47 +291,35 @@ func seedSOP(tx *gorm.DB, tenantID, userID, scenarioID uint64) error { return fmt.Errorf("find or create SOP: %w", err) } if err := tx.Model(&sop).Updates(map[string]interface{}{ - "description": "根据订单商品携带的症状标签展示关联症状、话术和可能疾病,辅助销售完成商品推荐并记录结果。", - "status": "published", + "description": "根据订单商品携带的症状标签展示关联症状、话术和可能疾病,辅助销售完成商品推荐并记录结果。", + "status": "published", + "start_node_key": "start", }).Error; err != nil { return err } - var version model.SOPVersion - err = tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Order("version DESC").First(&version).Error - if err == gorm.ErrRecordNotFound { - version = model.SOPVersion{TenantID: tenantID, SOPID: sop.ID, Version: 1, Status: "published", StartNodeKey: "start", CreatedBy: userID} - if err := tx.Create(&version).Error; err != nil { - return err - } - } else if err != nil { - return err - } var alreadySeeded int64 if err := tx.Model(&model.SOPNode{}).Where( - "sop_version_id = ? AND node_key = ? AND JSON_UNQUOTE(JSON_EXTRACT(config, '$.seed_key')) = ?", - version.ID, "start", "pet-doctor-v16-start-presentation-optional-pet", + "sop_id = ? AND node_key = ? AND JSON_UNQUOTE(JSON_EXTRACT(config, '$.seed_key')) = ?", + sop.ID, "start", "pet-doctor-v16-start-presentation-optional-pet", ).Count(&alreadySeeded).Error; err != nil { return err } if alreadySeeded > 0 { - if err := tx.Model(&model.SOPVersion{}).Where("sop_id = ? AND id <> ?", sop.ID, version.ID).Update("status", "superseded").Error; err != nil { - return err - } - return tx.Model(&version).Updates(map[string]interface{}{"status": "published", "start_node_key": "start"}).Error + return nil } nodes := petNodes() edges := petEdges() - if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPEdge{}).Error; err != nil { + if err := tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Delete(&model.SOPEdge{}).Error; err != nil { return err } - if err := tx.Where("sop_version_id = ?", version.ID).Delete(&model.SOPNode{}).Error; err != nil { + if err := tx.Where("sop_id = ? AND tenant_id = ?", sop.ID, tenantID).Delete(&model.SOPNode{}).Error; err != nil { return err } for index, definition := range nodes { configJSON, _ := json.Marshal(definition.Config) node := model.SOPNode{ - TenantID: tenantID, SOPVersionID: version.ID, NodeKey: definition.Key, Type: definition.Type, + TenantID: tenantID, SOPID: sop.ID, NodeKey: definition.Key, Type: definition.Type, Title: definition.Title, Content: definition.Content, Config: datatypes.JSON(configJSON), PositionX: 0, PositionY: index * 120, } if err := tx.Create(&node).Error; err != nil { @@ -341,21 +329,13 @@ func seedSOP(tx *gorm.DB, tenantID, userID, scenarioID uint64) error { for _, definition := range edges { conditionJSON, _ := json.Marshal(definition.Condition) edge := model.SOPEdge{ - TenantID: tenantID, SOPVersionID: version.ID, SourceNodeKey: definition.Source, TargetNodeKey: definition.Target, + TenantID: tenantID, SOPID: sop.ID, SourceNodeKey: definition.Source, TargetNodeKey: definition.Target, Condition: datatypes.JSON(conditionJSON), Priority: definition.Priority, } if err := tx.Create(&edge).Error; err != nil { return fmt.Errorf("create edge %s -> %s: %w", definition.Source, definition.Target, err) } } - if err := tx.Model(&model.SOPVersion{}).Where("sop_id = ? AND id <> ?", sop.ID, version.ID).Update("status", "superseded").Error; err != nil { - return err - } - if err := tx.Model(&version).Updates(map[string]interface{}{ - "status": "published", "start_node_key": "start", - }).Error; err != nil { - return err - } payload, _ := json.Marshal(map[string]interface{}{"scenario": "宠物医生问诊问药"}) return tx.Create(&model.AuditLog{ TenantID: tenantID, UserID: userID, Action: "seed", Resource: "sop", ResourceID: sop.ID, Payload: datatypes.JSON(payload), diff --git a/web/dist/assets/ExecuteView-B07inVPa.css b/web/dist/assets/ExecuteView-B07inVPa.css new file mode 100644 index 0000000..b0627d4 --- /dev/null +++ b/web/dist/assets/ExecuteView-B07inVPa.css @@ -0,0 +1 @@ +.execution-shell[data-v-aac1581f]{max-width:1220px}.sop-catalog[data-v-aac1581f]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.sop-entry[data-v-aac1581f]{text-align:left;cursor:pointer;grid-template-columns:40px 1fr 42px;align-items:start;gap:14px;min-height:150px;padding:22px;display:grid}.sop-entry[data-v-aac1581f]:hover{border-color:#9ac8b8;box-shadow:0 8px 24px #20282512}.entry-seq[data-v-aac1581f]{color:#8c9893;font-family:monospace;font-size:12px}.sop-entry small[data-v-aac1581f]{color:var(--green);font-weight:650}.sop-entry h2[data-v-aac1581f]{margin:8px 0 7px;font-family:Noto Serif SC,serif;font-size:20px}.sop-entry p[data-v-aac1581f]{color:var(--muted);margin:0;line-height:1.6}.play[data-v-aac1581f]{color:#fff;background:#202825;border-radius:4px;place-items:center;width:38px;height:38px;font-size:18px;display:grid}.run-workspace[data-v-aac1581f]{grid-template-columns:270px minmax(0,1fr);gap:18px;display:grid}.run-context[data-v-aac1581f]{color:#fff;background:#202825;border-radius:6px;align-self:start;padding:24px;position:sticky;top:86px}.run-label[data-v-aac1581f]{color:#72c9ab;font-size:11px;font-weight:700}.run-context h2[data-v-aac1581f]{margin:12px 0 8px;font-family:Noto Serif SC,serif}.run-context>p[data-v-aac1581f]{color:#aebdb7;margin:0 0 28px;line-height:1.6}.context-meta[data-v-aac1581f]{border-top:1px solid #3a4742;justify-content:space-between;align-items:center;padding:13px 0;display:flex}.context-meta span[data-v-aac1581f]{color:#9eada7;font-size:12px}.privacy-note[data-v-aac1581f]{color:#889b93;gap:8px;margin-top:28px;font-size:11px;display:flex}.conversation[data-v-aac1581f]{min-height:590px;padding:30px 34px}.conversation-progress[data-v-aac1581f]{color:#66736d;align-items:center;gap:8px;font-size:12px;display:flex}.conversation-progress span[data-v-aac1581f]{background:#d08736;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #faefe1}.conversation-progress span.done[data-v-aac1581f]{background:var(--green);box-shadow:0 0 0 4px #e4f1ec}.node-content[data-v-aac1581f]{padding:44px 0 26px}.node-content small[data-v-aac1581f]{color:var(--green);font-size:10px;font-weight:800}.node-content h1[data-v-aac1581f]{margin:8px 0 22px;font-family:Noto Serif SC,serif;font-size:28px}.node-content blockquote[data-v-aac1581f]{color:#29342f;border-left:3px solid var(--green);background:#f2f6f4;margin:0;padding:18px 20px;font-size:17px;line-height:1.8}.answer-form[data-v-aac1581f]{max-width:680px}.choice-group[data-v-aac1581f]{flex-wrap:wrap;display:flex}.run-actions[data-v-aac1581f]{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin:24px -34px -30px;padding:18px 34px;font-size:12px;display:flex}.run-actions>div[data-v-aac1581f]{align-items:center;gap:9px;display:flex}.completed-state[data-v-aac1581f]{text-align:center;padding:40px 0}.completed-state>span[data-v-aac1581f]{color:var(--green);font-size:50px}.completed-state h3[data-v-aac1581f]{margin:14px 0 8px;font-family:Noto Serif SC,serif;font-size:24px}.completed-state p[data-v-aac1581f]{color:var(--muted);margin:0 0 24px}.quick-feedback[data-v-aac1581f]{text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f5f8f6;grid-template-columns:180px 1fr auto;align-items:center;gap:12px;max-width:620px;margin:0 auto 18px;padding:16px;display:grid}.quick-feedback>span[data-v-aac1581f]{font-size:12px;font-weight:650}.quick-feedback[data-v-aac1581f] .ant-rate{font-size:18px}.quick-feedback[data-v-aac1581f] .ant-input{grid-column:1/3}.feedback-thanks[data-v-aac1581f]{max-width:520px;color:var(--green);background:#edf6f2;margin:0 auto 18px;padding:12px;font-size:12px}.knowledge-head[data-v-aac1581f]{justify-content:space-between;align-items:center;padding:12px 0;display:flex}.knowledge-head span[data-v-aac1581f]{color:var(--muted);font-size:11px}.standard-copy[data-v-aac1581f]{border-left:3px solid var(--green);background:#f2f7f5;padding:14px 16px}.standard-copy small[data-v-aac1581f]{font-size:10px;font-weight:750}.standard-copy p[data-v-aac1581f]{margin:6px 0 0;line-height:1.7}.knowledge-groups[data-v-aac1581f]{gap:14px;margin-bottom:24px;display:grid}.knowledge-group[data-v-aac1581f]{border:1px solid var(--line);border-left:3px solid var(--green);background:#fff;padding:0 16px 16px}.relation-block[data-v-aac1581f]{margin-top:10px}.relation-block>small[data-v-aac1581f]{color:var(--muted);margin-bottom:6px;font-weight:700;display:block}.relation-block .standard-copy[data-v-aac1581f]{margin-top:6px}.relation-block .standard-copy b[data-v-aac1581f]{font-size:12px}.start-presentation[data-v-aac1581f]{gap:22px;margin-bottom:28px;display:grid}.start-summary[data-v-aac1581f]{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.start-summary>div[data-v-aac1581f]{flex-direction:column;gap:5px;min-width:0;padding:14px 16px;display:flex}.start-summary>div[data-v-aac1581f]:nth-child(odd){border-right:1px solid var(--line)}.start-summary small[data-v-aac1581f],.order-product small[data-v-aac1581f]{color:var(--muted);font-size:10px}.start-summary b[data-v-aac1581f],.order-product b[data-v-aac1581f]{overflow-wrap:anywhere;font-size:13px}.presentation-heading[data-v-aac1581f]{justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.presentation-heading>span[data-v-aac1581f]{color:var(--muted);font-size:11px}.order-products[data-v-aac1581f]{gap:8px;display:grid}.order-product[data-v-aac1581f]{border-bottom:1px solid var(--line);grid-template-columns:72px minmax(0,1fr);align-items:center;gap:14px;min-height:82px;padding:10px 0;display:grid}.order-product.no-image[data-v-aac1581f]{grid-template-columns:1fr}.order-product img[data-v-aac1581f]{object-fit:cover;border:1px solid var(--line);background:#f4f6f5;border-radius:4px;width:72px;height:72px}.order-product>div[data-v-aac1581f]{grid-template-columns:minmax(0,1.7fr) minmax(100px,1fr);gap:12px;display:grid}.order-product span[data-v-aac1581f]{flex-direction:column;gap:5px;min-width:0;display:flex}.opening-copy[data-v-aac1581f]{border-left:3px solid var(--green);background:#edf6f2;padding:16px 18px}.opening-copy .presentation-heading[data-v-aac1581f]{min-height:28px}.opening-copy p[data-v-aac1581f]{color:#21302a;margin:9px 0 0;font-size:16px;line-height:1.8}.opening-copy[data-v-aac1581f] .ant-btn{color:var(--green)}.collection-heading[data-v-aac1581f]{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;margin:26px 0 16px;padding-bottom:10px;display:flex}.collection-heading span[data-v-aac1581f]{color:var(--muted);font-size:11px}.selectable-knowledge[data-v-aac1581f] .ant-checkbox-wrapper{align-items:center;display:flex}.selected-summary[data-v-aac1581f]{border-bottom:1px solid var(--line);grid-template-columns:130px 1fr;gap:12px;padding:9px 0;display:grid}.selected-summary span[data-v-aac1581f]{color:var(--muted);font-size:12px}.selected-summary b[data-v-aac1581f]{font-size:13px}.selection-summary[data-v-aac1581f]{margin-top:20px}.json-input[data-v-aac1581f],.result-collector[data-v-aac1581f] textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.result-collector[data-v-aac1581f]{text-align:left;border:1px solid var(--line);background:#f5f8f6;max-width:700px;margin:0 auto 22px;padding:18px}.result-collector>div[data-v-aac1581f]{justify-content:space-between;margin-bottom:10px;display:flex}.result-collector>div span[data-v-aac1581f]{color:var(--muted);font-size:11px}.result-collector pre[data-v-aac1581f]{color:#dbe8e3;white-space:pre-wrap;background:#202825;max-height:160px;padding:10px;font-size:11px;overflow:auto}.result-collector button[data-v-aac1581f]{margin-top:10px}@media (width<=800px){.sop-catalog[data-v-aac1581f],.run-workspace[data-v-aac1581f]{grid-template-columns:1fr}.run-context[data-v-aac1581f]{position:static}.conversation[data-v-aac1581f]{padding:22px}.run-actions[data-v-aac1581f]{margin:24px -22px -22px;padding:16px 22px}.run-actions span[data-v-aac1581f]{display:none}.quick-feedback[data-v-aac1581f]{grid-template-columns:1fr}.quick-feedback[data-v-aac1581f] .ant-input{grid-column:auto}.start-summary[data-v-aac1581f]{grid-template-columns:1fr}.start-summary>div[data-v-aac1581f]:nth-child(odd){border-right:0}.start-summary>div+div[data-v-aac1581f]{border-top:1px solid var(--line)}.order-product>div[data-v-aac1581f]{grid-template-columns:1fr}} diff --git a/web/dist/assets/ExecuteView-CAUSQPH9.js b/web/dist/assets/ExecuteView-CAUSQPH9.js deleted file mode 100644 index ecc031b..0000000 --- a/web/dist/assets/ExecuteView-CAUSQPH9.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,Bt as t,D as n,F as r,I as i,O as a,P as o,Q as s,S as c,Tt as l,U as ee,Y as u,_t as d,a as f,et as p,i as te,j as m,k as h,lt as g,n as _,r as v,st as ne,t as y,tt as b,vt as x,zt as re}from"./client-Bk7n1O1W.js";import{a as S}from"./config-provider-B-t02-Z0.js";import{t as C}from"./modal-Dwr7ZWlh.js";import{t as ie}from"./CopyOutlined-lDB-4CmK.js";import{t as ae}from"./PlayCircleOutlined-DjeS67m_.js";import{t as oe}from"./SafetyCertificateOutlined-B1v8On0u.js";import{h as w,m as se}from"./useApi-CROJJdhE-C8LJOf_8.js";var T={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z`}}]},name:`stop`,theme:`outlined`};function E(e){for(var t=1;tk.value?.node.config||{}),V=n(()=>{if(!k.value)return[];let e=k.value.node;return e.type===`question`||e.type===`choice`?k.value.fields.filter(e=>e.field_key===B.value.field_key):e.type===`form`?k.value.fields.filter(e=>(B.value.field_keys||[]).includes(e.field_key)):[]}),qe=n(()=>k.value?.node.collection?.context_fields||[]),H=n(()=>k.value?.node.collection?.steps||[]),Je=n(()=>{let e=k.value?.node.outputs||[],t=H.value[0];return t?e.filter(e=>e.suggested||q(t.field_key,e.name)):e}),U=n(()=>k.value?.node.type===`start`?k.value.node.presentation:void 0);function Ye(e){return Array.isArray(e)?e.join(`、`):e==null||e===``?`-`:String(e)}function W(e){return e.fields.find(e=>e.kind===`image`)}function Xe(e){return e.fields.filter(e=>e.kind!==`image`)}function Ze(e){let t=e.target;t.style.display=`none`,t.parentElement?.classList.add(`no-image`)}async function Qe(){let e=U.value?.opening?.content;if(e)try{await navigator.clipboard.writeText(e),S.success(`开场话术已复制`)}catch{S.warning(`复制失败,请手动选择话术`)}}function $e(e){if(!e.from_field)return e.options;let t=A[e.from_field],n=Array.isArray(t)?t:t?[t]:[];return e.options.filter(e=>(e.parents||[]).some(e=>n.includes(e)))}function et(e){if(!e.from_field)return!1;let t=A[e.from_field];return!Array.isArray(t)||t.length===0}function tt(e){let t=!1;for(let n of H.value){if(t){let e=new Set($e(n).map(e=>e.value)),t=Array.isArray(A[n.field_key])?A[n.field_key]:[];A[n.field_key]=t.filter(t=>e.has(t))}n.field_key===e.field_key&&(t=!0)}}function nt(e){return e.required?[{required:!0,message:`请填写${e.name}`,trigger:[`change`,`blur`]}]:[]}function rt(e){return e.required?[{required:!0,type:e.multiple?`array`:`string`,message:`请选择${e.name}`,trigger:`change`}]:[]}function G(e){return H.value[e]}function K(e){return Array.isArray(A[e])?A[e]:[]}function q(e,t){return K(e).includes(t)}function it(e,t,n){let r=K(e.field_key);A[e.field_key]=n?[...new Set([...r,t])]:r.filter(e=>e!==t),tt(e)}function at(e){return B.value.knowledge_selector?.relation_labels?.[e]||e}async function J(){E.value=!0;try{D.value=(await y.get(`/available-sops`)).items;let e=Number(v.query.run||0);e>0?(k.value=await y.get(`/runs/${e}`),await X()):(k.value=null,await Y())}catch(e){S.error(_(e)),await T.replace({query:{}})}finally{E.value=!1}}async function Y(){Object.keys(A).forEach(e=>delete A[e]),await ee(),L.value?.clearValidate()}async function X(){if(await Y(),k.value)for(let e of V.value){let t=k.value.run.answers?.[e.field_key];t!=null&&(A[e.field_key]=t)}}async function ot(e){N.value=e,P.external_ref=`business:${Date.now()}`,P.input_text=e.scenario_name===`宠物医生问诊问药`?JSON.stringify(f,null,2):`{}`,P.initial_values={},M.value=!0}async function st(){if(!N.value)return;let e;try{e=JSON.parse(P.input_text)}catch{return S.warning(`业务数据 JSON 格式不正确`)}j.value=!0;try{k.value=await y.post(`/runs`,{sop_id:N.value.id,input:e,external_ref:P.external_ref,initial_values:P.initial_values}),M.value=!1,await T.replace({query:{run:String(k.value.run.id)}}),await X(),Object.assign(R,{score:5,comment:``}),z.value=!1,I.value=!!k.value.run.final_result}catch(e){S.error(_(e))}finally{j.value=!1}}async function ct(){if(k.value){try{await L.value?.validate()}catch{return}for(let e of H.value)if(e.required&&!K(e.field_key).length)return S.warning(`请选择${e.name}`);j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/answer`,{node_key:k.value.node.node_key,answers:{...A}}),await X()}catch(e){S.error(_(e))}finally{j.value=!1}}}function lt(){k.value&&C.confirm({title:`结束本次执行?`,content:`当前节点尚未提交的内容不会保存,执行记录将标记为“人工结束”。`,okText:`确认结束`,cancelText:`继续执行`,okType:`danger`,async onOk(){if(k.value){j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/finish`,{result:`manual`}),Object.keys(A).forEach(e=>delete A[e]),S.success(`本次执行已结束`)}catch(e){throw S.error(_(e)),e}finally{j.value=!1}}}})}function Z(e){return e.field_type}function Q(e,t){let n=e.validation?.[t];return typeof n==`number`?n:void 0}function $(e){return e.required||(B.value.required_field_keys||[]).includes(e.field_key)||[`question`,`choice`].includes(k.value?.node.type||``)&&B.value.required===!0}function ut(e){let t=[];if($(e)&&t.push({required:!0,message:`请填写${e.field_name}`,trigger:[`change`,`blur`]}),[`text`,`textarea`].includes(e.field_type)){let n=Q(e,`min_length`),r=Q(e,`max_length`);n!==void 0&&t.push({min:n,message:`${e.field_name}不能少于 ${n} 个字符`,trigger:`blur`}),r!==void 0&&t.push({max:r,message:`${e.field_name}不能超过 ${r} 个字符`,trigger:`blur`})}if(e.field_type===`number`){let n=Q(e,`min`),r=Q(e,`max`);t.push({type:`number`,message:`${e.field_name}必须是数字`,trigger:`change`}),n!==void 0&&t.push({type:`number`,min:n,message:`${e.field_name}不能小于 ${n}`,trigger:`change`}),r!==void 0&&t.push({type:`number`,max:r,message:`${e.field_name}不能大于 ${r}`,trigger:`change`})}return t}async function dt(){if(k.value){j.value=!0;try{await y.post(`/runs/${k.value.run.id}/feedback`,R),z.value=!0,S.success(`反馈已提交`)}catch(e){S.error(_(e))}finally{j.value=!1}}}async function ft(){if(!k.value)return;let e;try{e=F.value.trim()?JSON.parse(F.value):null}catch{return S.warning(`最终结果 JSON 格式不正确`)}j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/finish`,{result:k.value.run.result||`finish`,final_result:e}),I.value=!0,S.success(`最终结果已保存到本次执行`)}catch(e){S.error(_(e))}finally{j.value=!1}}async function pt(){k.value=null,await T.replace({query:{}}),await J()}return ne(()=>v.query.run,()=>J()),u(J),(n,i)=>{let ee=b(`a-empty`),u=b(`a-button`),d=b(`a-tooltip`),f=b(`a-checkbox`),_=b(`a-textarea`),v=b(`a-rate`),ne=b(`a-radio-button`),y=b(`a-radio-group`),x=b(`a-input`),S=b(`a-input-number`),C=b(`a-radio`),w=b(`a-select`),se=b(`a-date-picker`),T=b(`a-form-item`),N=b(`a-form`),J=b(`a-spin`),Y=b(`a-modal`);return s(),m(`div`,ce,[i[23]||=a(`div`,{class:`page-heading`},[a(`div`,null,[a(`h1`,null,`执行话术`),a(`p`,null,`选择 SOP,系统会根据客户回答给出下一步。`)])],-1),r(J,{spinning:E.value},{default:g(()=>[k.value?(s(),m(`div`,pe,[a(`aside`,me,[a(`span`,he,`RUN-`+t(String(k.value.run.id).padStart(5,`0`)),1),a(`h2`,null,t(k.value.run.status===`completed`?`执行已结束`:`执行进行中`),1),i[9]||=a(`p`,null,`客户回答会自动保存在当前执行记录中。`,-1),a(`div`,ge,[i[6]||=a(`span`,null,`当前节点`,-1),a(`b`,null,t(k.value.node.title),1)]),a(`div`,_e,[i[7]||=a(`span`,null,`已采集字段`,-1),a(`b`,null,t(Object.keys(k.value.run.answers||{}).length),1)]),a(`div`,ve,[r(l(oe)),i[8]||=a(`span`,null,`敏感信息请遵循企业数据规范`,-1)])]),a(`main`,ye,[a(`div`,be,[a(`span`,{class:re({done:k.value.run.status===`completed`})},null,2),a(`b`,null,t(k.value.run.status===`completed`?`流程已完成`:`正在执行`),1)]),a(`div`,xe,[a(`small`,null,t(k.value.node.type.toUpperCase()),1),a(`h1`,null,t(k.value.node.title),1),k.value.node.content?(s(),m(`blockquote`,Se,t(k.value.node.content),1)):e(``,!0)]),U.value?(s(),m(`section`,Ce,[U.value.summary.length?(s(),m(`div`,we,[(s(!0),m(c,null,p(U.value.summary,e=>(s(),m(`div`,{key:e.key},[a(`small`,null,t(e.label),1),a(`b`,null,t(Ye(e.value)),1)]))),128))])):e(``,!0),U.value.items.length?(s(),m(`div`,Te,[a(`div`,Ee,[i[10]||=a(`b`,null,`订单商品`,-1),a(`span`,null,t(U.value.items.length)+` 件`,1)]),(s(!0),m(c,null,p(U.value.items,(n,r)=>(s(),m(`article`,{key:r,class:re([`order-product`,{"no-image":!W(n)}])},[W(n)?(s(),m(`img`,{key:0,src:String(W(n)?.value||``),alt:`订单商品图片`,onError:Ze},null,40,De)):e(``,!0),a(`div`,null,[(s(!0),m(c,null,p(Xe(n),e=>(s(),m(`span`,{key:e.key},[a(`small`,null,t(e.label),1),a(`b`,null,t(Ye(e.value)),1)]))),128))])],2))),128))])):e(``,!0),U.value.opening?(s(),m(`div`,Oe,[a(`div`,ke,[a(`b`,null,t(U.value.opening.title),1),r(d,{title:`复制话术`},{default:g(()=>[r(u,{type:`text`,"aria-label":`复制开场话术`,onClick:Qe},{default:g(()=>[r(l(ie))]),_:1})]),_:1})]),a(`p`,null,t(U.value.opening.content),1)])):e(``,!0)])):e(``,!0),k.value.node.knowledge?(s(),m(`section`,Ae,[a(`div`,je,[a(`b`,null,t(k.value.node.knowledge.title),1),i[11]||=a(`span`,null,`历史知识`,-1)]),(s(!0),m(c,null,p(k.value.node.knowledge.copies,e=>(s(),m(`div`,{key:e.id,class:`standard-copy`},[a(`small`,null,t(e.title),1),a(`p`,null,t(e.content),1)]))),128)),k.value.node.knowledge.copies?.length?e(``,!0):(s(),m(`div`,Me,[i[12]||=a(`small`,null,`标准话术`,-1),a(`p`,null,t(k.value.node.knowledge.standard_copy),1)])),k.value.node.knowledge.forbidden_copy?(s(),m(`div`,Ne,[i[13]||=a(`small`,null,`禁用表达`,-1),a(`p`,null,t(k.value.node.knowledge.forbidden_copy),1)])):e(``,!0),k.value.node.knowledge.risk_note?(s(),m(`div`,Pe,[i[14]||=a(`small`,null,`风险提醒`,-1),a(`p`,null,t(k.value.node.knowledge.risk_note),1)])):e(``,!0)])):e(``,!0),Je.value.length?(s(),m(`section`,Fe,[(s(!0),m(c,null,p(Je.value,n=>(s(),m(`article`,{key:n.key,class:`knowledge-group`},[a(`div`,Ie,[k.value.node.collection&&G(0)?(s(),h(f,{key:0,checked:q(G(0).field_key,n.name),onChange:e=>it(G(0),n.name,e.target.checked)},{default:g(()=>[a(`b`,null,t(n.name),1)]),_:2},1032,[`checked`,`onChange`])):(s(),m(`b`,Le,t(n.name),1)),a(`span`,null,t(n.suggested?`系统推断`:n.type),1)]),(s(!0),m(c,null,p(n.relations,(r,i)=>(s(),m(`div`,{key:i,class:`relation-block`},[a(`small`,null,t(at(String(i))),1),(s(!0),m(c,null,p(r,r=>(s(),m(`div`,{key:r.key,class:`standard-copy selectable-knowledge`},[k.value.node.collection&&G(1)?.from_field===G(0)?.field_key&&B.value.knowledge_collection?.steps?.[1]?.relation_type===i?(s(),h(f,{key:0,checked:q(G(1).field_key,r.name),disabled:!q(G(0).field_key,n.name),onChange:e=>it(G(1),r.name,e.target.checked)},{default:g(()=>[a(`b`,null,t(r.name),1)]),_:2},1032,[`checked`,`disabled`,`onChange`])):(s(),m(`b`,Re,t(r.name),1)),a(`p`,null,t(r.content.template||r.content.standard_copy||r.content.product_name||r.name),1),r.content.sku_code?(s(),m(`small`,ze,`SKU:`+t(r.content.sku_code),1)):e(``,!0)]))),128))]))),128))]))),128))])):e(``,!0),k.value.run.status===`completed`?(s(),m(`div`,Be,[r(l(te)),a(`h3`,null,t(k.value.run.result===`manual`?`已人工结束`:k.value.node.type===`escalate`?`已转交处理`:`本次执行已完成`),1),a(`p`,null,t(k.value.run.result===`manual`?`本次执行由操作人员在当前节点结束。`:k.value.node.content),1),a(`section`,Ve,[i[15]||=a(`div`,null,[a(`b`,null,`最终结果`),a(`span`,null,`格式由当前场景定义,也可以留空`)],-1),a(`pre`,null,t(JSON.stringify(k.value.result_schema||{fields:[]},null,2)),1),r(_,{value:F.value,"onUpdate:value":i[0]||=e=>F.value=e,rows:10,spellcheck:`false`},null,8,[`value`]),r(u,{type:`primary`,loading:j.value,onClick:ft},{default:g(()=>[o(t(I.value?`更新最终结果`:`保存最终结果`),1)]),_:1},8,[`loading`])]),z.value?(s(),m(`div`,Ue,`反馈已记录,将用于后续优化。`)):(s(),m(`div`,He,[i[17]||=a(`span`,null,`这套 SOP 是否清晰好用?`,-1),r(v,{value:R.score,"onUpdate:value":i[1]||=e=>R.score=e},null,8,[`value`]),r(_,{value:R.comment,"onUpdate:value":i[2]||=e=>R.comment=e,rows:2,maxlength:2e3,placeholder:`可填写需要改进的步骤`},null,8,[`value`]),r(u,{type:`primary`,loading:j.value,onClick:dt},{default:g(()=>[...i[16]||=[o(`提交反馈`,-1)]]),_:1},8,[`loading`])])),r(u,{onClick:pt},{default:g(()=>[...i[18]||=[o(`执行另一套 SOP`,-1)]]),_:1})])):(s(),m(c,{key:4},[r(N,{ref_key:`answerForm`,ref:L,model:A,layout:`vertical`,class:`answer-form`},{default:g(()=>[(s(!0),m(c,null,p(V.value,e=>(s(),h(T,{key:e.id,name:e.field_key,label:e.field_name,required:$(e),rules:ut(e)},{default:g(()=>[k.value.node.type===`choice`?(s(),h(y,{key:0,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,class:`choice-group`},{default:g(()=>[(s(!0),m(c,null,p(B.value.options||[],e=>(s(),h(ne,{key:e,value:e},{default:g(()=>[o(t(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`,`onUpdate:value`])):Z(e)===`text`?(s(),h(x,{key:1,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,maxlength:Q(e,`max_length`),"show-count":``},null,8,[`value`,`onUpdate:value`,`maxlength`])):Z(e)===`textarea`?(s(),h(_,{key:2,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,rows:3,maxlength:Q(e,`max_length`),"show-count":``},null,8,[`value`,`onUpdate:value`,`maxlength`])):Z(e)===`number`?(s(),h(S,{key:3,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,min:Q(e,`min`),max:Q(e,`max`),style:{width:`100%`}},null,8,[`value`,`onUpdate:value`,`min`,`max`])):Z(e)===`boolean`?(s(),h(y,{key:4,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t},{default:g(()=>[r(C,{value:!0},{default:g(()=>[...i[19]||=[o(`是`,-1)]]),_:1}),r(C,{value:!1},{default:g(()=>[...i[20]||=[o(`否`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])):Z(e)===`select`?(s(),h(w,{key:5,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,options:(e.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):Z(e)===`multiselect`?(s(),h(w,{key:6,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,mode:`multiple`,options:(e.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):Z(e)===`date`?(s(),h(se,{key:7,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`value`,`onUpdate:value`])):(s(),h(x,{key:8,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t},null,8,[`value`,`onUpdate:value`]))]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),k.value.node.collection?(s(),m(c,{key:0},[a(`div`,We,[a(`b`,null,t(k.value.node.collection.context_title||`补充信息`),1),a(`span`,null,t(k.value.node.collection.context_hint),1)]),(s(!0),m(c,null,p(qe.value,t=>(s(),h(T,{key:t.key,name:t.key,label:t.name,required:t.required,rules:nt(t)},{default:g(()=>[t.type===`text`?(s(),h(x,{key:0,value:A[t.key],"onUpdate:value":e=>A[t.key]=e},null,8,[`value`,`onUpdate:value`])):t.type===`textarea`?(s(),h(_,{key:1,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,rows:3},null,8,[`value`,`onUpdate:value`])):t.type===`number`?(s(),h(S,{key:2,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,style:{width:`100%`}},null,8,[`value`,`onUpdate:value`])):t.type===`select`?(s(),h(w,{key:3,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,options:(t.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):e(``,!0)]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),a(`div`,Ge,[a(`b`,null,t(k.value.node.collection.selection_title||`确认选择`),1),a(`span`,null,t(k.value.node.collection.selection_hint),1)]),(s(!0),m(c,null,p(H.value,e=>(s(),h(T,{key:`selector-${e.field_key}`,name:e.field_key,label:e.name,required:e.required,rules:rt(e)},{default:g(()=>[r(w,{value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,mode:e.multiple?`multiple`:void 0,"show-search":``,"allow-clear":``,disabled:et(e),placeholder:et(e)?`请先选择上一级`:`搜索并选择${e.name}`,options:$e(e).map(e=>({value:e.value,label:e.suggested?`${e.label}(系统推断)`:e.label})),onChange:t=>tt(e)},null,8,[`value`,`onUpdate:value`,`mode`,`disabled`,`placeholder`,`options`,`onChange`])]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),(s(!0),m(c,null,p(H.value,e=>(s(),m(`div`,{class:`selected-summary`,key:e.field_key},[a(`span`,null,t(e.name),1),a(`b`,null,t(K(e.field_key).join(`、`)||`尚未选择`),1)]))),128))],64)):e(``,!0)]),_:1},8,[`model`]),a(`div`,Ke,[a(`span`,null,t(V.value.length||k.value.node.collection?`填写并确认后继续下一步`:`确认当前话术已完成`),1),a(`div`,null,[r(u,{danger:``,disabled:j.value,onClick:lt},{default:g(()=>[r(l(O)),i[21]||=o(`人工结束`,-1)]),_:1},8,[`disabled`]),r(u,{type:`primary`,size:`large`,loading:j.value,onClick:ct},{default:g(()=>[...i[22]||=[o(`继续下一步`,-1)]]),_:1},8,[`loading`])])])],64))])])):(s(),m(`div`,le,[(s(!0),m(c,null,p(D.value,e=>(s(),m(`button`,{key:e.id,class:`sop-entry surface`,onClick:t=>ot(e)},[a(`span`,de,t(String(e.id).padStart(2,`0`)),1),a(`div`,null,[a(`small`,null,t(e.scenario_name),1),a(`h2`,null,t(e.name),1),a(`p`,null,t(e.description||`按标准步骤执行这套话术流程。`),1)]),a(`span`,fe,[r(l(ae))])],8,ue))),128)),D.value.length?e(``,!0):(s(),h(ee,{key:0,description:`还没有可用的 SOP`}))]))]),_:1},8,[`spinning`]),r(Y,{open:M.value,"onUpdate:open":i[5]||=e=>M.value=e,title:`启动场景执行`,"ok-text":`创建执行`,"confirm-loading":j.value,width:`760px`,onOk:st},{default:g(()=>[r(N,{layout:`vertical`},{default:g(()=>[r(T,{label:`业务关联标识`},{default:g(()=>[r(x,{value:P.external_ref,"onUpdate:value":i[3]||=e=>P.external_ref=e,placeholder:`例如 order:ORDER-001`},null,8,[`value`])]),_:1}),r(T,{label:`业务数据 JSON`},{default:g(()=>[r(_,{value:P.input_text,"onUpdate:value":i[4]||=e=>P.input_text=e,rows:15,spellcheck:`false`,class:`json-input`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`open`,`confirm-loading`])])}}}),[[`__scopeId`,`data-v-8abc5ff4`]]);export{k as default}; \ No newline at end of file diff --git a/web/dist/assets/ExecuteView-D6wWGKCU.css b/web/dist/assets/ExecuteView-D6wWGKCU.css deleted file mode 100644 index 00448d4..0000000 --- a/web/dist/assets/ExecuteView-D6wWGKCU.css +++ /dev/null @@ -1 +0,0 @@ -.execution-shell[data-v-8abc5ff4]{max-width:1220px}.sop-catalog[data-v-8abc5ff4]{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;display:grid}.sop-entry[data-v-8abc5ff4]{text-align:left;cursor:pointer;grid-template-columns:40px 1fr 42px;align-items:start;gap:14px;min-height:150px;padding:22px;display:grid}.sop-entry[data-v-8abc5ff4]:hover{border-color:#9ac8b8;box-shadow:0 8px 24px #20282512}.entry-seq[data-v-8abc5ff4]{color:#8c9893;font-family:monospace;font-size:12px}.sop-entry small[data-v-8abc5ff4]{color:var(--green);font-weight:650}.sop-entry h2[data-v-8abc5ff4]{margin:8px 0 7px;font-family:Noto Serif SC,serif;font-size:20px}.sop-entry p[data-v-8abc5ff4]{color:var(--muted);margin:0;line-height:1.6}.play[data-v-8abc5ff4]{color:#fff;background:#202825;border-radius:4px;place-items:center;width:38px;height:38px;font-size:18px;display:grid}.run-workspace[data-v-8abc5ff4]{grid-template-columns:270px minmax(0,1fr);gap:18px;display:grid}.run-context[data-v-8abc5ff4]{color:#fff;background:#202825;border-radius:6px;align-self:start;padding:24px;position:sticky;top:86px}.run-label[data-v-8abc5ff4]{color:#72c9ab;font-size:11px;font-weight:700}.run-context h2[data-v-8abc5ff4]{margin:12px 0 8px;font-family:Noto Serif SC,serif}.run-context>p[data-v-8abc5ff4]{color:#aebdb7;margin:0 0 28px;line-height:1.6}.context-meta[data-v-8abc5ff4]{border-top:1px solid #3a4742;justify-content:space-between;align-items:center;padding:13px 0;display:flex}.context-meta span[data-v-8abc5ff4]{color:#9eada7;font-size:12px}.privacy-note[data-v-8abc5ff4]{color:#889b93;gap:8px;margin-top:28px;font-size:11px;display:flex}.conversation[data-v-8abc5ff4]{min-height:590px;padding:30px 34px}.conversation-progress[data-v-8abc5ff4]{color:#66736d;align-items:center;gap:8px;font-size:12px;display:flex}.conversation-progress span[data-v-8abc5ff4]{background:#d08736;border-radius:50%;width:8px;height:8px;box-shadow:0 0 0 4px #faefe1}.conversation-progress span.done[data-v-8abc5ff4]{background:var(--green);box-shadow:0 0 0 4px #e4f1ec}.node-content[data-v-8abc5ff4]{padding:44px 0 26px}.node-content small[data-v-8abc5ff4]{color:var(--green);font-size:10px;font-weight:800}.node-content h1[data-v-8abc5ff4]{margin:8px 0 22px;font-family:Noto Serif SC,serif;font-size:28px}.node-content blockquote[data-v-8abc5ff4]{color:#29342f;border-left:3px solid var(--green);background:#f2f6f4;margin:0;padding:18px 20px;font-size:17px;line-height:1.8}.answer-form[data-v-8abc5ff4]{max-width:680px}.choice-group[data-v-8abc5ff4]{flex-wrap:wrap;display:flex}.run-actions[data-v-8abc5ff4]{border-top:1px solid var(--line);color:var(--muted);justify-content:space-between;align-items:center;gap:16px;margin:24px -34px -30px;padding:18px 34px;font-size:12px;display:flex}.run-actions>div[data-v-8abc5ff4]{align-items:center;gap:9px;display:flex}.completed-state[data-v-8abc5ff4]{text-align:center;padding:40px 0}.completed-state>span[data-v-8abc5ff4]{color:var(--green);font-size:50px}.completed-state h3[data-v-8abc5ff4]{margin:14px 0 8px;font-family:Noto Serif SC,serif;font-size:24px}.completed-state p[data-v-8abc5ff4]{color:var(--muted);margin:0 0 24px}.quick-feedback[data-v-8abc5ff4]{text-align:left;border-top:1px solid var(--line);border-bottom:1px solid var(--line);background:#f5f8f6;grid-template-columns:180px 1fr auto;align-items:center;gap:12px;max-width:620px;margin:0 auto 18px;padding:16px;display:grid}.quick-feedback>span[data-v-8abc5ff4]{font-size:12px;font-weight:650}.quick-feedback[data-v-8abc5ff4] .ant-rate{font-size:18px}.quick-feedback[data-v-8abc5ff4] .ant-input{grid-column:1/3}.feedback-thanks[data-v-8abc5ff4]{max-width:520px;color:var(--green);background:#edf6f2;margin:0 auto 18px;padding:12px;font-size:12px}.knowledge-snapshot[data-v-8abc5ff4]{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:0 0 24px}.knowledge-head[data-v-8abc5ff4]{justify-content:space-between;align-items:center;padding:12px 0;display:flex}.knowledge-head span[data-v-8abc5ff4]{color:var(--muted);font-size:11px}.standard-copy[data-v-8abc5ff4],.knowledge-note[data-v-8abc5ff4]{border-left:3px solid var(--green);background:#f2f7f5;padding:14px 16px}.standard-copy small[data-v-8abc5ff4],.knowledge-note small[data-v-8abc5ff4]{font-size:10px;font-weight:750}.standard-copy p[data-v-8abc5ff4],.knowledge-note p[data-v-8abc5ff4]{margin:6px 0 0;line-height:1.7}.knowledge-note[data-v-8abc5ff4]{background:#fbf3f0;border-left-color:#c4573f;margin-top:8px}.knowledge-note.risk[data-v-8abc5ff4]{background:#fbf6eb;border-left-color:#bd7b24}.knowledge-groups[data-v-8abc5ff4]{gap:14px;margin-bottom:24px;display:grid}.knowledge-group[data-v-8abc5ff4]{border:1px solid var(--line);border-left:3px solid var(--green);background:#fff;padding:0 16px 16px}.relation-block[data-v-8abc5ff4]{margin-top:10px}.relation-block>small[data-v-8abc5ff4]{color:var(--muted);margin-bottom:6px;font-weight:700;display:block}.relation-block .standard-copy[data-v-8abc5ff4]{margin-top:6px}.relation-block .standard-copy b[data-v-8abc5ff4]{font-size:12px}.start-presentation[data-v-8abc5ff4]{gap:22px;margin-bottom:28px;display:grid}.start-summary[data-v-8abc5ff4]{border-top:1px solid var(--line);border-bottom:1px solid var(--line);grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.start-summary>div[data-v-8abc5ff4]{flex-direction:column;gap:5px;min-width:0;padding:14px 16px;display:flex}.start-summary>div[data-v-8abc5ff4]:nth-child(odd){border-right:1px solid var(--line)}.start-summary small[data-v-8abc5ff4],.order-product small[data-v-8abc5ff4]{color:var(--muted);font-size:10px}.start-summary b[data-v-8abc5ff4],.order-product b[data-v-8abc5ff4]{overflow-wrap:anywhere;font-size:13px}.presentation-heading[data-v-8abc5ff4]{justify-content:space-between;align-items:center;gap:12px;min-height:36px;display:flex}.presentation-heading>span[data-v-8abc5ff4]{color:var(--muted);font-size:11px}.order-products[data-v-8abc5ff4]{gap:8px;display:grid}.order-product[data-v-8abc5ff4]{border-bottom:1px solid var(--line);grid-template-columns:72px minmax(0,1fr);align-items:center;gap:14px;min-height:82px;padding:10px 0;display:grid}.order-product.no-image[data-v-8abc5ff4]{grid-template-columns:1fr}.order-product img[data-v-8abc5ff4]{object-fit:cover;border:1px solid var(--line);background:#f4f6f5;border-radius:4px;width:72px;height:72px}.order-product>div[data-v-8abc5ff4]{grid-template-columns:minmax(0,1.7fr) minmax(100px,1fr);gap:12px;display:grid}.order-product span[data-v-8abc5ff4]{flex-direction:column;gap:5px;min-width:0;display:flex}.opening-copy[data-v-8abc5ff4]{border-left:3px solid var(--green);background:#edf6f2;padding:16px 18px}.opening-copy .presentation-heading[data-v-8abc5ff4]{min-height:28px}.opening-copy p[data-v-8abc5ff4]{color:#21302a;margin:9px 0 0;font-size:16px;line-height:1.8}.opening-copy[data-v-8abc5ff4] .ant-btn{color:var(--green)}.collection-heading[data-v-8abc5ff4]{border-bottom:1px solid var(--line);justify-content:space-between;gap:16px;margin:26px 0 16px;padding-bottom:10px;display:flex}.collection-heading span[data-v-8abc5ff4]{color:var(--muted);font-size:11px}.selectable-knowledge[data-v-8abc5ff4] .ant-checkbox-wrapper{align-items:center;display:flex}.selected-summary[data-v-8abc5ff4]{border-bottom:1px solid var(--line);grid-template-columns:130px 1fr;gap:12px;padding:9px 0;display:grid}.selected-summary span[data-v-8abc5ff4]{color:var(--muted);font-size:12px}.selected-summary b[data-v-8abc5ff4]{font-size:13px}.selection-summary[data-v-8abc5ff4]{margin-top:20px}.json-input[data-v-8abc5ff4],.result-collector[data-v-8abc5ff4] textarea{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.result-collector[data-v-8abc5ff4]{text-align:left;border:1px solid var(--line);background:#f5f8f6;max-width:700px;margin:0 auto 22px;padding:18px}.result-collector>div[data-v-8abc5ff4]{justify-content:space-between;margin-bottom:10px;display:flex}.result-collector>div span[data-v-8abc5ff4]{color:var(--muted);font-size:11px}.result-collector pre[data-v-8abc5ff4]{color:#dbe8e3;white-space:pre-wrap;background:#202825;max-height:160px;padding:10px;font-size:11px;overflow:auto}.result-collector button[data-v-8abc5ff4]{margin-top:10px}@media (width<=800px){.sop-catalog[data-v-8abc5ff4],.run-workspace[data-v-8abc5ff4]{grid-template-columns:1fr}.run-context[data-v-8abc5ff4]{position:static}.conversation[data-v-8abc5ff4]{padding:22px}.run-actions[data-v-8abc5ff4]{margin:24px -22px -22px;padding:16px 22px}.run-actions span[data-v-8abc5ff4]{display:none}.quick-feedback[data-v-8abc5ff4]{grid-template-columns:1fr}.quick-feedback[data-v-8abc5ff4] .ant-input{grid-column:auto}.start-summary[data-v-8abc5ff4]{grid-template-columns:1fr}.start-summary>div[data-v-8abc5ff4]:nth-child(odd){border-right:0}.start-summary>div+div[data-v-8abc5ff4]{border-top:1px solid var(--line)}.order-product>div[data-v-8abc5ff4]{grid-template-columns:1fr}} diff --git a/web/dist/assets/ExecuteView-DJveuZjr.js b/web/dist/assets/ExecuteView-DJveuZjr.js new file mode 100644 index 0000000..727b0c5 --- /dev/null +++ b/web/dist/assets/ExecuteView-DJveuZjr.js @@ -0,0 +1 @@ +import{A as e,Bt as t,D as n,F as r,I as i,O as a,P as o,Q as s,S as c,Tt as l,U as ee,Y as u,_t as d,a as f,et as p,i as te,j as m,k as h,lt as g,n as _,r as v,st as ne,t as y,tt as b,vt as x,zt as re}from"./client-Bk7n1O1W.js";import{a as S}from"./config-provider-B-t02-Z0.js";import{t as C}from"./modal-Dwr7ZWlh.js";import{t as ie}from"./CopyOutlined-lDB-4CmK.js";import{t as ae}from"./PlayCircleOutlined-DjeS67m_.js";import{t as oe}from"./SafetyCertificateOutlined-B1v8On0u.js";import{h as w,m as se}from"./useApi-CROJJdhE-C8LJOf_8.js";var T={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M512 64C264.6 64 64 264.6 64 512s200.6 448 448 448 448-200.6 448-448S759.4 64 512 64zm0 820c-205.4 0-372-166.6-372-372 0-89 31.3-170.8 83.5-234.8l523.3 523.3C682.8 852.7 601 884 512 884zm288.5-137.2L277.2 223.5C341.2 171.3 423 140 512 140c205.4 0 372 166.6 372 372 0 89-31.3 170.8-83.5 234.8z`}}]},name:`stop`,theme:`outlined`};function E(e){for(var t=1;tk.value?.node.config||{}),V=n(()=>{if(!k.value)return[];let e=k.value.node;return e.type===`question`||e.type===`choice`?k.value.fields.filter(e=>e.field_key===B.value.field_key):e.type===`form`?k.value.fields.filter(e=>(B.value.field_keys||[]).includes(e.field_key)):[]}),He=n(()=>k.value?.node.collection?.context_fields||[]),H=n(()=>k.value?.node.collection?.steps||[]),Ue=n(()=>{let e=k.value?.node.outputs||[],t=H.value[0];return t?e.filter(e=>e.suggested||q(t.field_key,e.name)):e}),U=n(()=>k.value?.node.type===`start`?k.value.node.presentation:void 0);function We(e){return Array.isArray(e)?e.join(`、`):e==null||e===``?`-`:String(e)}function W(e){return e.fields.find(e=>e.kind===`image`)}function Ge(e){return e.fields.filter(e=>e.kind!==`image`)}function Ke(e){let t=e.target;t.style.display=`none`,t.parentElement?.classList.add(`no-image`)}async function qe(){let e=U.value?.opening?.content;if(e)try{await navigator.clipboard.writeText(e),S.success(`开场话术已复制`)}catch{S.warning(`复制失败,请手动选择话术`)}}function Je(e){if(!e.from_field)return e.options;let t=A[e.from_field],n=Array.isArray(t)?t:t?[t]:[];return e.options.filter(e=>(e.parents||[]).some(e=>n.includes(e)))}function Ye(e){if(!e.from_field)return!1;let t=A[e.from_field];return!Array.isArray(t)||t.length===0}function Xe(e){let t=!1;for(let n of H.value){if(t){let e=new Set(Je(n).map(e=>e.value)),t=Array.isArray(A[n.field_key])?A[n.field_key]:[];A[n.field_key]=t.filter(t=>e.has(t))}n.field_key===e.field_key&&(t=!0)}}function Ze(e){return e.required?[{required:!0,message:`请填写${e.name}`,trigger:[`change`,`blur`]}]:[]}function Qe(e){return e.required?[{required:!0,type:e.multiple?`array`:`string`,message:`请选择${e.name}`,trigger:`change`}]:[]}function G(e){return H.value[e]}function K(e){return Array.isArray(A[e])?A[e]:[]}function q(e,t){return K(e).includes(t)}function $e(e,t,n){let r=K(e.field_key);A[e.field_key]=n?[...new Set([...r,t])]:r.filter(e=>e!==t),Xe(e)}function et(e){return B.value.knowledge_selector?.relation_labels?.[e]||e}async function J(){E.value=!0;try{D.value=(await y.get(`/available-sops`)).items;let e=Number(v.query.run||0);e>0?(k.value=await y.get(`/runs/${e}`),await X()):(k.value=null,await Y())}catch(e){S.error(_(e)),await T.replace({query:{}})}finally{E.value=!1}}async function Y(){Object.keys(A).forEach(e=>delete A[e]),await ee(),L.value?.clearValidate()}async function X(){if(await Y(),k.value)for(let e of V.value){let t=k.value.run.answers?.[e.field_key];t!=null&&(A[e.field_key]=t)}}async function tt(e){N.value=e,P.external_ref=`business:${Date.now()}`,P.input_text=e.scenario_name===`宠物医生问诊问药`?JSON.stringify(f,null,2):`{}`,P.initial_values={},M.value=!0}async function nt(){if(!N.value)return;let e;try{e=JSON.parse(P.input_text)}catch{return S.warning(`业务数据 JSON 格式不正确`)}j.value=!0;try{k.value=await y.post(`/runs`,{sop_id:N.value.id,input:e,external_ref:P.external_ref,initial_values:P.initial_values}),M.value=!1,await T.replace({query:{run:String(k.value.run.id)}}),await X(),Object.assign(R,{score:5,comment:``}),z.value=!1,I.value=!!k.value.run.final_result}catch(e){S.error(_(e))}finally{j.value=!1}}async function rt(){if(k.value){try{await L.value?.validate()}catch{return}for(let e of H.value)if(e.required&&!K(e.field_key).length)return S.warning(`请选择${e.name}`);j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/answer`,{node_key:k.value.node.node_key,answers:{...A}}),await X()}catch(e){S.error(_(e))}finally{j.value=!1}}}function it(){k.value&&C.confirm({title:`结束本次执行?`,content:`当前节点尚未提交的内容不会保存,执行记录将标记为“人工结束”。`,okText:`确认结束`,cancelText:`继续执行`,okType:`danger`,async onOk(){if(k.value){j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/finish`,{result:`manual`}),Object.keys(A).forEach(e=>delete A[e]),S.success(`本次执行已结束`)}catch(e){throw S.error(_(e)),e}finally{j.value=!1}}}})}function Z(e){return e.field_type}function Q(e,t){let n=e.validation?.[t];return typeof n==`number`?n:void 0}function $(e){return e.required||(B.value.required_field_keys||[]).includes(e.field_key)||[`question`,`choice`].includes(k.value?.node.type||``)&&B.value.required===!0}function at(e){let t=[];if($(e)&&t.push({required:!0,message:`请填写${e.field_name}`,trigger:[`change`,`blur`]}),[`text`,`textarea`].includes(e.field_type)){let n=Q(e,`min_length`),r=Q(e,`max_length`);n!==void 0&&t.push({min:n,message:`${e.field_name}不能少于 ${n} 个字符`,trigger:`blur`}),r!==void 0&&t.push({max:r,message:`${e.field_name}不能超过 ${r} 个字符`,trigger:`blur`})}if(e.field_type===`number`){let n=Q(e,`min`),r=Q(e,`max`);t.push({type:`number`,message:`${e.field_name}必须是数字`,trigger:`change`}),n!==void 0&&t.push({type:`number`,min:n,message:`${e.field_name}不能小于 ${n}`,trigger:`change`}),r!==void 0&&t.push({type:`number`,max:r,message:`${e.field_name}不能大于 ${r}`,trigger:`change`})}return t}async function ot(){if(k.value){j.value=!0;try{await y.post(`/runs/${k.value.run.id}/feedback`,R),z.value=!0,S.success(`反馈已提交`)}catch(e){S.error(_(e))}finally{j.value=!1}}}async function st(){if(!k.value)return;let e;try{e=F.value.trim()?JSON.parse(F.value):null}catch{return S.warning(`最终结果 JSON 格式不正确`)}j.value=!0;try{k.value=await y.post(`/runs/${k.value.run.id}/finish`,{result:k.value.run.result||`finish`,final_result:e}),I.value=!0,S.success(`最终结果已保存到本次执行`)}catch(e){S.error(_(e))}finally{j.value=!1}}async function ct(){k.value=null,await T.replace({query:{}}),await J()}return ne(()=>v.query.run,()=>J()),u(J),(n,i)=>{let ee=b(`a-empty`),u=b(`a-button`),d=b(`a-tooltip`),f=b(`a-checkbox`),_=b(`a-textarea`),v=b(`a-rate`),ne=b(`a-radio-button`),y=b(`a-radio-group`),x=b(`a-input`),S=b(`a-input-number`),C=b(`a-radio`),w=b(`a-select`),se=b(`a-date-picker`),T=b(`a-form-item`),N=b(`a-form`),J=b(`a-spin`),Y=b(`a-modal`);return s(),m(`div`,ce,[i[19]||=a(`div`,{class:`page-heading`},[a(`div`,null,[a(`h1`,null,`执行话术`),a(`p`,null,`选择 SOP,系统会根据客户回答给出下一步。`)])],-1),r(J,{spinning:E.value},{default:g(()=>[k.value?(s(),m(`div`,pe,[a(`aside`,me,[a(`span`,he,`RUN-`+t(String(k.value.run.id).padStart(5,`0`)),1),a(`h2`,null,t(k.value.run.status===`completed`?`执行已结束`:`执行进行中`),1),i[9]||=a(`p`,null,`客户回答会自动保存在当前执行记录中。`,-1),a(`div`,ge,[i[6]||=a(`span`,null,`当前节点`,-1),a(`b`,null,t(k.value.node.title),1)]),a(`div`,_e,[i[7]||=a(`span`,null,`已采集字段`,-1),a(`b`,null,t(Object.keys(k.value.run.answers||{}).length),1)]),a(`div`,ve,[r(l(oe)),i[8]||=a(`span`,null,`敏感信息请遵循企业数据规范`,-1)])]),a(`main`,ye,[a(`div`,be,[a(`span`,{class:re({done:k.value.run.status===`completed`})},null,2),a(`b`,null,t(k.value.run.status===`completed`?`流程已完成`:`正在执行`),1)]),a(`div`,xe,[a(`small`,null,t(k.value.node.type.toUpperCase()),1),a(`h1`,null,t(k.value.node.title),1),k.value.node.content?(s(),m(`blockquote`,Se,t(k.value.node.content),1)):e(``,!0)]),U.value?(s(),m(`section`,Ce,[U.value.summary.length?(s(),m(`div`,we,[(s(!0),m(c,null,p(U.value.summary,e=>(s(),m(`div`,{key:e.key},[a(`small`,null,t(e.label),1),a(`b`,null,t(We(e.value)),1)]))),128))])):e(``,!0),U.value.items.length?(s(),m(`div`,Te,[a(`div`,Ee,[i[10]||=a(`b`,null,`订单商品`,-1),a(`span`,null,t(U.value.items.length)+` 件`,1)]),(s(!0),m(c,null,p(U.value.items,(n,r)=>(s(),m(`article`,{key:r,class:re([`order-product`,{"no-image":!W(n)}])},[W(n)?(s(),m(`img`,{key:0,src:String(W(n)?.value||``),alt:`订单商品图片`,onError:Ke},null,40,De)):e(``,!0),a(`div`,null,[(s(!0),m(c,null,p(Ge(n),e=>(s(),m(`span`,{key:e.key},[a(`small`,null,t(e.label),1),a(`b`,null,t(We(e.value)),1)]))),128))])],2))),128))])):e(``,!0),U.value.opening?(s(),m(`div`,Oe,[a(`div`,ke,[a(`b`,null,t(U.value.opening.title),1),r(d,{title:`复制话术`},{default:g(()=>[r(u,{type:`text`,"aria-label":`复制开场话术`,onClick:qe},{default:g(()=>[r(l(ie))]),_:1})]),_:1})]),a(`p`,null,t(U.value.opening.content),1)])):e(``,!0)])):e(``,!0),Ue.value.length?(s(),m(`section`,Ae,[(s(!0),m(c,null,p(Ue.value,n=>(s(),m(`article`,{key:n.key,class:`knowledge-group`},[a(`div`,je,[k.value.node.collection&&G(0)?(s(),h(f,{key:0,checked:q(G(0).field_key,n.name),onChange:e=>$e(G(0),n.name,e.target.checked)},{default:g(()=>[a(`b`,null,t(n.name),1)]),_:2},1032,[`checked`,`onChange`])):(s(),m(`b`,Me,t(n.name),1)),a(`span`,null,t(n.suggested?`系统推断`:n.type),1)]),(s(!0),m(c,null,p(n.relations,(r,i)=>(s(),m(`div`,{key:i,class:`relation-block`},[a(`small`,null,t(et(String(i))),1),(s(!0),m(c,null,p(r,r=>(s(),m(`div`,{key:r.key,class:`standard-copy selectable-knowledge`},[k.value.node.collection&&G(1)?.from_field===G(0)?.field_key&&B.value.knowledge_collection?.steps?.[1]?.relation_type===i?(s(),h(f,{key:0,checked:q(G(1).field_key,r.name),disabled:!q(G(0).field_key,n.name),onChange:e=>$e(G(1),r.name,e.target.checked)},{default:g(()=>[a(`b`,null,t(r.name),1)]),_:2},1032,[`checked`,`disabled`,`onChange`])):(s(),m(`b`,Ne,t(r.name),1)),a(`p`,null,t(r.content.template||r.content.standard_copy||r.content.product_name||r.name),1),r.content.sku_code?(s(),m(`small`,Pe,`SKU:`+t(r.content.sku_code),1)):e(``,!0)]))),128))]))),128))]))),128))])):e(``,!0),k.value.run.status===`completed`?(s(),m(`div`,Fe,[r(l(te)),a(`h3`,null,t(k.value.run.result===`manual`?`已人工结束`:k.value.node.type===`escalate`?`已转交处理`:`本次执行已完成`),1),a(`p`,null,t(k.value.run.result===`manual`?`本次执行由操作人员在当前节点结束。`:k.value.node.content),1),a(`section`,Ie,[i[11]||=a(`div`,null,[a(`b`,null,`最终结果`),a(`span`,null,`格式由当前场景定义,也可以留空`)],-1),a(`pre`,null,t(JSON.stringify(k.value.result_schema||{fields:[]},null,2)),1),r(_,{value:F.value,"onUpdate:value":i[0]||=e=>F.value=e,rows:10,spellcheck:`false`},null,8,[`value`]),r(u,{type:`primary`,loading:j.value,onClick:st},{default:g(()=>[o(t(I.value?`更新最终结果`:`保存最终结果`),1)]),_:1},8,[`loading`])]),z.value?(s(),m(`div`,Re,`反馈已记录,将用于后续优化。`)):(s(),m(`div`,Le,[i[13]||=a(`span`,null,`这套 SOP 是否清晰好用?`,-1),r(v,{value:R.score,"onUpdate:value":i[1]||=e=>R.score=e},null,8,[`value`]),r(_,{value:R.comment,"onUpdate:value":i[2]||=e=>R.comment=e,rows:2,maxlength:2e3,placeholder:`可填写需要改进的步骤`},null,8,[`value`]),r(u,{type:`primary`,loading:j.value,onClick:ot},{default:g(()=>[...i[12]||=[o(`提交反馈`,-1)]]),_:1},8,[`loading`])])),r(u,{onClick:ct},{default:g(()=>[...i[14]||=[o(`执行另一套 SOP`,-1)]]),_:1})])):(s(),m(c,{key:3},[r(N,{ref_key:`answerForm`,ref:L,model:A,layout:`vertical`,class:`answer-form`},{default:g(()=>[(s(!0),m(c,null,p(V.value,e=>(s(),h(T,{key:e.id,name:e.field_key,label:e.field_name,required:$(e),rules:at(e)},{default:g(()=>[k.value.node.type===`choice`?(s(),h(y,{key:0,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,class:`choice-group`},{default:g(()=>[(s(!0),m(c,null,p(B.value.options||[],e=>(s(),h(ne,{key:e,value:e},{default:g(()=>[o(t(e),1)]),_:2},1032,[`value`]))),128))]),_:1},8,[`value`,`onUpdate:value`])):Z(e)===`text`?(s(),h(x,{key:1,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,maxlength:Q(e,`max_length`),"show-count":``},null,8,[`value`,`onUpdate:value`,`maxlength`])):Z(e)===`textarea`?(s(),h(_,{key:2,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,rows:3,maxlength:Q(e,`max_length`),"show-count":``},null,8,[`value`,`onUpdate:value`,`maxlength`])):Z(e)===`number`?(s(),h(S,{key:3,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,min:Q(e,`min`),max:Q(e,`max`),style:{width:`100%`}},null,8,[`value`,`onUpdate:value`,`min`,`max`])):Z(e)===`boolean`?(s(),h(y,{key:4,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t},{default:g(()=>[r(C,{value:!0},{default:g(()=>[...i[15]||=[o(`是`,-1)]]),_:1}),r(C,{value:!1},{default:g(()=>[...i[16]||=[o(`否`,-1)]]),_:1})]),_:1},8,[`value`,`onUpdate:value`])):Z(e)===`select`?(s(),h(w,{key:5,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,options:(e.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):Z(e)===`multiselect`?(s(),h(w,{key:6,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,mode:`multiple`,options:(e.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):Z(e)===`date`?(s(),h(se,{key:7,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,"value-format":`YYYY-MM-DD`,style:{width:`100%`}},null,8,[`value`,`onUpdate:value`])):(s(),h(x,{key:8,value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t},null,8,[`value`,`onUpdate:value`]))]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),k.value.node.collection?(s(),m(c,{key:0},[a(`div`,ze,[a(`b`,null,t(k.value.node.collection.context_title||`补充信息`),1),a(`span`,null,t(k.value.node.collection.context_hint),1)]),(s(!0),m(c,null,p(He.value,t=>(s(),h(T,{key:t.key,name:t.key,label:t.name,required:t.required,rules:Ze(t)},{default:g(()=>[t.type===`text`?(s(),h(x,{key:0,value:A[t.key],"onUpdate:value":e=>A[t.key]=e},null,8,[`value`,`onUpdate:value`])):t.type===`textarea`?(s(),h(_,{key:1,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,rows:3},null,8,[`value`,`onUpdate:value`])):t.type===`number`?(s(),h(S,{key:2,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,style:{width:`100%`}},null,8,[`value`,`onUpdate:value`])):t.type===`select`?(s(),h(w,{key:3,value:A[t.key],"onUpdate:value":e=>A[t.key]=e,options:(t.options||[]).map(e=>({value:e,label:e}))},null,8,[`value`,`onUpdate:value`,`options`])):e(``,!0)]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),a(`div`,Be,[a(`b`,null,t(k.value.node.collection.selection_title||`确认选择`),1),a(`span`,null,t(k.value.node.collection.selection_hint),1)]),(s(!0),m(c,null,p(H.value,e=>(s(),h(T,{key:`selector-${e.field_key}`,name:e.field_key,label:e.name,required:e.required,rules:Qe(e)},{default:g(()=>[r(w,{value:A[e.field_key],"onUpdate:value":t=>A[e.field_key]=t,mode:e.multiple?`multiple`:void 0,"show-search":``,"allow-clear":``,disabled:Ye(e),placeholder:Ye(e)?`请先选择上一级`:`搜索并选择${e.name}`,options:Je(e).map(e=>({value:e.value,label:e.suggested?`${e.label}(系统推断)`:e.label})),onChange:t=>Xe(e)},null,8,[`value`,`onUpdate:value`,`mode`,`disabled`,`placeholder`,`options`,`onChange`])]),_:2},1032,[`name`,`label`,`required`,`rules`]))),128)),(s(!0),m(c,null,p(H.value,e=>(s(),m(`div`,{class:`selected-summary`,key:e.field_key},[a(`span`,null,t(e.name),1),a(`b`,null,t(K(e.field_key).join(`、`)||`尚未选择`),1)]))),128))],64)):e(``,!0)]),_:1},8,[`model`]),a(`div`,Ve,[a(`span`,null,t(V.value.length||k.value.node.collection?`填写并确认后继续下一步`:`确认当前话术已完成`),1),a(`div`,null,[r(u,{danger:``,disabled:j.value,onClick:it},{default:g(()=>[r(l(O)),i[17]||=o(`人工结束`,-1)]),_:1},8,[`disabled`]),r(u,{type:`primary`,size:`large`,loading:j.value,onClick:rt},{default:g(()=>[...i[18]||=[o(`继续下一步`,-1)]]),_:1},8,[`loading`])])])],64))])])):(s(),m(`div`,le,[(s(!0),m(c,null,p(D.value,e=>(s(),m(`button`,{key:e.id,class:`sop-entry surface`,onClick:t=>tt(e)},[a(`span`,de,t(String(e.id).padStart(2,`0`)),1),a(`div`,null,[a(`small`,null,t(e.scenario_name),1),a(`h2`,null,t(e.name),1),a(`p`,null,t(e.description||`按标准步骤执行这套话术流程。`),1)]),a(`span`,fe,[r(l(ae))])],8,ue))),128)),D.value.length?e(``,!0):(s(),h(ee,{key:0,description:`还没有可用的 SOP`}))]))]),_:1},8,[`spinning`]),r(Y,{open:M.value,"onUpdate:open":i[5]||=e=>M.value=e,title:`启动场景执行`,"ok-text":`创建执行`,"confirm-loading":j.value,width:`760px`,onOk:nt},{default:g(()=>[r(N,{layout:`vertical`},{default:g(()=>[r(T,{label:`业务关联标识`},{default:g(()=>[r(x,{value:P.external_ref,"onUpdate:value":i[3]||=e=>P.external_ref=e,placeholder:`例如 order:ORDER-001`},null,8,[`value`])]),_:1}),r(T,{label:`业务数据 JSON`},{default:g(()=>[r(_,{value:P.input_text,"onUpdate:value":i[4]||=e=>P.input_text=e,rows:15,spellcheck:`false`,class:`json-input`},null,8,[`value`])]),_:1})]),_:1})]),_:1},8,[`open`,`confirm-loading`])])}}}),[[`__scopeId`,`data-v-aac1581f`]]);export{k as default}; \ No newline at end of file diff --git a/web/dist/assets/RunDetailView-BFxue3EE.js b/web/dist/assets/RunDetailView-BFxue3EE.js deleted file mode 100644 index 40944e5..0000000 --- a/web/dist/assets/RunDetailView-BFxue3EE.js +++ /dev/null @@ -1 +0,0 @@ -import{A as e,Bt as t,D as n,F as r,I as i,O as a,P as o,Q as s,S as c,Tt as l,Y as u,_t as d,et as f,i as ee,j as p,k as m,lt as h,n as g,r as _,t as v,tt as y,vt as b,zt as x}from"./client-Bk7n1O1W.js";import{a as S}from"./config-provider-B-t02-Z0.js";import{t as te}from"./auth-D6Tj4g1X.js";import{t as ne}from"./ArrowLeftOutlined-B1KoeknA.js";import{t as re}from"./SafetyCertificateOutlined-B1v8On0u.js";import{h as ie,m as ae}from"./useApi-CROJJdhE-C8LJOf_8.js";var C={class:`page-shell run-detail-page`},w={class:`detail-heading`},T={class:`run-code`},oe={class:`detail-layout`},se={class:`surface timeline-panel`},ce={class:`event-head`},le={key:0},ue={key:1,class:`event-knowledge`},E={key:0,class:`risk-note`},D={key:2,class:`event-answers`},O={class:`detail-aside`},k={class:`surface summary-panel`},A={class:`surface answer-panel`},j={class:`section-title`},M={key:0,class:`answer-list`},N={key:1,class:`aside-empty`},P={class:`surface answer-panel`},F={key:0,class:`final-result`},I={key:1,class:`aside-empty`},L={class:`surface feedback-band`},R={key:0,class:`feedback-list`},z={key:1,class:`feedback-form`},B={key:2,class:`aside-empty`},V=_(i({__name:`RunDetailView`,setup(i){let _=ae(),V=ie(),H=te(),U=b(!0),W=b(null),G=b(!1),K=d({score:5,comment:``}),q=n(()=>new Map((W.value?.fields||[]).map(e=>[e.field_key,e.field_name]))),J=n(()=>Object.entries(W.value?.run.answers||{})),Y=n(()=>W.value?.run.final_result||null),X=n(()=>H.can(`runs.feedback`)&&W.value?.run.status===`completed`&&!W.value.feedback.some(e=>e.user_id===H.user?.user_id));function de(e){return{finish:`正常结束`,escalate:`转人工 / 转诊`,manual:`人工结束`}[e]||e||`进行中`}function fe(e){return{start:`开始执行`,enter:`进入节点`,answer:`提交回答`,finish:`结束执行`,final_result:`保存最终结果`}[e]||e}function Z(e){return e===!0?`是`:e===!1?`否`:Array.isArray(e)?e.join(`、`):e==null||e===``?`-`:String(e)}function Q(e){let t=e.payload?.answers||{};return Object.entries(t)}async function $(){U.value=!0;try{W.value=await v.get(`/runs/${_.params.id}/detail`)}catch(e){S.error(g(e)),V.replace(`/runs`)}finally{U.value=!1}}async function pe(){G.value=!0;try{await v.post(`/runs/${_.params.id}/feedback`,K),S.success(`反馈已提交`),await $()}catch(e){S.error(g(e))}finally{G.value=!1}}return u($),(n,i)=>{let u=y(`a-button`),d=y(`a-tag`),g=y(`a-timeline-item`),_=y(`a-timeline`),v=y(`a-rate`),b=y(`a-textarea`),S=y(`a-spin`);return s(),p(`div`,C,[r(u,{type:`link`,class:`back-link`,onClick:i[0]||=e=>l(V).push(`/runs`)},{default:h(()=>[r(l(ne)),i[3]||=o(`返回执行记录`,-1)]),_:1}),r(S,{spinning:U.value},{default:h(()=>[W.value?(s(),p(c,{key:0},[a(`header`,w,[a(`div`,null,[a(`div`,T,`RUN-`+t(String(W.value.run.id).padStart(5,`0`)),1),a(`h1`,null,t(W.value.run.sop_name),1),a(`p`,null,t(W.value.run.scenario_name)+` · `+t(W.value.run.operator_name),1)]),a(`div`,{class:x([`result-block`,W.value.run.result===`escalate`?`warning`:`success`])},[W.value.run.result===`escalate`?(s(),m(l(re),{key:0})):(s(),m(l(ee),{key:1})),a(`span`,null,[a(`small`,null,t(W.value.run.status===`completed`?`执行结果`:`当前状态`),1),a(`b`,null,t(de(W.value.run.result)),1)])],2)]),a(`section`,oe,[a(`main`,se,[i[5]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行轨迹`),a(`small`,null,`按实际发生顺序记录`)],-1),r(_,{class:`run-timeline`},{default:h(()=>[(s(!0),p(c,null,f(W.value.events,n=>(s(),m(g,{key:n.id,color:n.action===`finish`||n.node_type===`escalate`?`red`:n.action===`answer`?`blue`:`green`},{default:h(()=>[a(`div`,ce,[a(`b`,null,t(n.node_title||n.node_key),1),r(d,null,{default:h(()=>[o(t(fe(n.action)),1)]),_:2},1024),a(`time`,null,t(new Date(n.created_at).toLocaleString(`zh-CN`)),1)]),n.action===`enter`&&n.node_content?(s(),p(`p`,le,t(n.node_content),1)):e(``,!0),n.action===`enter`&&n.knowledge?(s(),p(`div`,ue,[a(`div`,null,[a(`b`,null,t(n.knowledge.title),1),i[4]||=a(`small`,null,`历史知识`,-1)]),a(`p`,null,t(n.knowledge.standard_copy),1),n.knowledge.risk_note?(s(),p(`p`,E,t(n.knowledge.risk_note),1)):e(``,!0)])):e(``,!0),(s(!0),p(c,null,f(n.outputs||[],e=>(s(),p(`div`,{key:e.key,class:`event-knowledge`},[a(`div`,null,[a(`b`,null,t(e.name),1),a(`small`,null,t(e.type),1)]),(s(!0),p(c,null,f(e.relations,(e,n)=>(s(),p(`div`,{key:n},[a(`p`,null,[a(`b`,null,t(n),1)]),(s(!0),p(c,null,f(e,e=>(s(),p(`p`,{key:e.key},t(e.content.template||e.content.standard_copy||e.name),1))),128))]))),128))]))),128)),Q(n).length?(s(),p(`div`,D,[(s(!0),p(c,null,f(Q(n),([e,n])=>(s(),p(`span`,{key:e},[a(`small`,null,t(q.value.get(e)||e),1),a(`b`,null,t(Z(n)),1)]))),128))])):e(``,!0)]),_:2},1032,[`color`]))),128))]),_:1})]),a(`aside`,O,[a(`section`,k,[i[10]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行信息`)],-1),a(`dl`,null,[a(`div`,null,[i[6]||=a(`dt`,null,`状态`,-1),a(`dd`,null,[r(d,{color:W.value.run.status===`completed`?`green`:`orange`},{default:h(()=>[o(t(W.value.run.status===`completed`?`已完成`:`进行中`),1)]),_:1},8,[`color`])])]),a(`div`,null,[i[7]||=a(`dt`,null,`开始时间`,-1),a(`dd`,null,t(new Date(W.value.run.started_at).toLocaleString(`zh-CN`)),1)]),a(`div`,null,[i[8]||=a(`dt`,null,`完成时间`,-1),a(`dd`,null,t(W.value.run.completed_at?new Date(W.value.run.completed_at).toLocaleString(`zh-CN`):`-`),1)]),a(`div`,null,[i[9]||=a(`dt`,null,`当前节点`,-1),a(`dd`,null,t(W.value.run.current_node_key),1)])])]),a(`section`,A,[a(`div`,j,[i[11]||=a(`span`,null,`已采集信息`,-1),a(`small`,null,t(J.value.length)+` 项`,1)]),J.value.length?(s(),p(`div`,M,[(s(!0),p(c,null,f(J.value,([e,n])=>(s(),p(`div`,{key:e},[a(`span`,null,t(q.value.get(e)||e),1),a(`b`,null,t(Z(n)),1)]))),128))])):(s(),p(`div`,N,`尚未采集字段`))]),a(`section`,P,[i[12]||=a(`div`,{class:`section-title`},[a(`span`,null,`最终结果`)],-1),Y.value?(s(),p(`pre`,F,t(JSON.stringify(Y.value,null,2)),1)):(s(),p(`div`,I,`本次执行未收集最终结果`))])])]),a(`section`,L,[i[15]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行反馈`),a(`small`,null,`用于判断 SOP 是否清晰、有效`)],-1),W.value.feedback.length?(s(),p(`div`,R,[(s(!0),p(c,null,f(W.value.feedback,e=>(s(),p(`article`,{key:e.id},[a(`div`,null,[a(`b`,null,t(e.user_name),1),r(v,{value:e.score,disabled:``},null,8,[`value`])]),a(`p`,null,t(e.comment||`未填写补充说明`),1),a(`time`,null,t(new Date(e.created_at).toLocaleString(`zh-CN`)),1)]))),128))])):e(``,!0),X.value?(s(),p(`div`,z,[a(`div`,null,[i[13]||=a(`span`,null,`本次 SOP 是否好用?`,-1),r(v,{value:K.score,"onUpdate:value":i[1]||=e=>K.score=e},null,8,[`value`])]),r(b,{value:K.comment,"onUpdate:value":i[2]||=e=>K.comment=e,rows:3,maxlength:2e3,"show-count":``,placeholder:`记录不顺畅的步骤、缺失信息或有效话术。`},null,8,[`value`]),r(u,{type:`primary`,loading:G.value,onClick:pe},{default:h(()=>[...i[14]||=[o(`提交反馈`,-1)]]),_:1},8,[`loading`])])):e(``,!0),!W.value.feedback.length&&!X.value?(s(),p(`div`,B,`暂无反馈`)):e(``,!0)])],64)):e(``,!0)]),_:1},8,[`spinning`])])}}}),[[`__scopeId`,`data-v-31b2289d`]]);export{V as default}; \ No newline at end of file diff --git a/web/dist/assets/RunDetailView-D7a859PI.css b/web/dist/assets/RunDetailView-D7a859PI.css deleted file mode 100644 index 070bd50..0000000 --- a/web/dist/assets/RunDetailView-D7a859PI.css +++ /dev/null @@ -1 +0,0 @@ -.run-detail-page[data-v-31b2289d]{max-width:1320px}.back-link[data-v-31b2289d]{height:auto;margin:0 0 14px;padding:0}.detail-heading[data-v-31b2289d]{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:20px;display:flex}.run-code[data-v-31b2289d]{color:var(--green);font-family:monospace;font-size:12px;font-weight:750}.detail-heading h1[data-v-31b2289d]{margin:7px 0 5px;font-family:Noto Serif SC,serif;font-size:28px}.detail-heading p[data-v-31b2289d]{color:var(--muted);margin:0}.result-block[data-v-31b2289d]{border-left:3px solid;align-items:center;gap:12px;min-width:210px;padding:15px 17px;display:flex}.result-block>span[data-v-31b2289d]:first-child{font-size:25px}.result-block>span[data-v-31b2289d]:last-child{flex-direction:column;display:flex}.result-block small[data-v-31b2289d]{font-size:10px}.result-block b[data-v-31b2289d]{margin-top:3px}.result-block.success[data-v-31b2289d]{color:#17664f;background:#eaf4f0;border-color:#25866a}.result-block.warning[data-v-31b2289d]{color:#8d5b16;background:#fbf2e3;border-color:#c08026}.detail-layout[data-v-31b2289d]{grid-template-columns:minmax(0,1fr) 330px;gap:16px;display:grid}.timeline-panel[data-v-31b2289d]{min-height:560px;padding:22px 24px}.section-title[data-v-31b2289d]{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:22px;display:flex}.section-title span[data-v-31b2289d]{font-weight:700}.section-title small[data-v-31b2289d]{color:var(--muted);font-size:11px}.run-timeline[data-v-31b2289d]{padding-top:5px}.event-head[data-v-31b2289d]{align-items:center;gap:9px;min-height:27px;display:flex}.event-head time[data-v-31b2289d]{color:#8b9691;margin-left:auto;font-size:11px}.run-timeline p[data-v-31b2289d]{color:#56635d;margin:8px 0 0;line-height:1.65}.event-answers[data-v-31b2289d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px;display:grid}.event-answers span[data-v-31b2289d]{background:#f4f7f5;border-left:2px solid #a6cbbd;justify-content:space-between;gap:10px;padding:8px 10px;display:flex}.event-answers small[data-v-31b2289d]{color:var(--muted)}.event-answers b[data-v-31b2289d]{font-size:12px}.detail-aside[data-v-31b2289d]{flex-direction:column;gap:16px;display:flex}.summary-panel[data-v-31b2289d],.answer-panel[data-v-31b2289d]{padding:20px}.summary-panel dl[data-v-31b2289d]{margin:0}.summary-panel dl>div[data-v-31b2289d]{border-bottom:1px solid #edf0ee;justify-content:space-between;gap:15px;padding:10px 0;display:flex}.summary-panel dl>div[data-v-31b2289d]:last-child{border-bottom:0}.summary-panel dt[data-v-31b2289d]{color:var(--muted);font-size:12px}.summary-panel dd[data-v-31b2289d]{text-align:right;margin:0;font-size:12px}.answer-list>div[data-v-31b2289d]{border-bottom:1px solid #edf0ee;flex-direction:column;padding:10px 0;display:flex}.answer-list>div[data-v-31b2289d]:last-child{border-bottom:0}.answer-list span[data-v-31b2289d]{color:var(--muted);font-size:11px}.answer-list b[data-v-31b2289d]{margin-top:4px;font-size:13px}.aside-empty[data-v-31b2289d]{color:#929d98;text-align:center;padding:24px 0;font-size:12px}.feedback-band[data-v-31b2289d]{margin-top:16px;padding:22px 24px}.feedback-list[data-v-31b2289d]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.feedback-list article[data-v-31b2289d]{border-top:1px solid var(--line);padding:14px 0}.feedback-list article>div[data-v-31b2289d]{justify-content:space-between;align-items:center;display:flex}.feedback-list[data-v-31b2289d] .ant-rate{font-size:15px}.feedback-list p[data-v-31b2289d]{color:#54615b;margin:9px 0}.feedback-list time[data-v-31b2289d]{color:#929d98;font-size:11px}.feedback-form[data-v-31b2289d]{border-top:1px solid var(--line);grid-template-columns:220px minmax(0,1fr) auto;align-items:center;gap:14px;padding-top:16px;display:grid}.feedback-form>div[data-v-31b2289d]{flex-direction:column;gap:6px;display:flex}.feedback-form>div>span[data-v-31b2289d]{font-size:12px;font-weight:650}.feedback-form[data-v-31b2289d] .ant-rate{font-size:20px}@media (width<=900px){.detail-layout[data-v-31b2289d]{grid-template-columns:1fr}.detail-aside[data-v-31b2289d]{grid-template-columns:1fr 1fr;display:grid}.feedback-form[data-v-31b2289d],.feedback-list[data-v-31b2289d]{grid-template-columns:1fr}}@media (width<=620px){.detail-heading[data-v-31b2289d]{flex-direction:column;align-items:flex-start}.result-block[data-v-31b2289d]{width:100%}.detail-aside[data-v-31b2289d]{grid-template-columns:1fr}.timeline-panel[data-v-31b2289d]{padding:18px}.event-head[data-v-31b2289d]{flex-wrap:wrap;align-items:flex-start}.event-head time[data-v-31b2289d]{width:100%;margin:0}.event-answers[data-v-31b2289d]{grid-template-columns:1fr}}.event-knowledge[data-v-31b2289d]{border-left:3px solid var(--green);background:#f2f7f5;margin-top:10px;padding:12px 14px}.event-knowledge>div[data-v-31b2289d]{justify-content:space-between;gap:12px;display:flex}.event-knowledge small[data-v-31b2289d]{color:var(--muted)}.event-knowledge .risk-note[data-v-31b2289d]{color:#8d5b16;border-top:1px solid #dce9e4;padding-top:8px}.final-result[data-v-31b2289d]{color:#33413b;white-space:pre-wrap;overflow-wrap:anywhere;background:#f4f7f5;max-height:280px;margin:0;padding:12px;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto} diff --git a/web/dist/assets/RunDetailView-D7ydL_xd.css b/web/dist/assets/RunDetailView-D7ydL_xd.css new file mode 100644 index 0000000..8a36fc2 --- /dev/null +++ b/web/dist/assets/RunDetailView-D7ydL_xd.css @@ -0,0 +1 @@ +.run-detail-page[data-v-7e705b21]{max-width:1320px}.back-link[data-v-7e705b21]{height:auto;margin:0 0 14px;padding:0}.detail-heading[data-v-7e705b21]{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:20px;display:flex}.run-code[data-v-7e705b21]{color:var(--green);font-family:monospace;font-size:12px;font-weight:750}.detail-heading h1[data-v-7e705b21]{margin:7px 0 5px;font-family:Noto Serif SC,serif;font-size:28px}.detail-heading p[data-v-7e705b21]{color:var(--muted);margin:0}.result-block[data-v-7e705b21]{border-left:3px solid;align-items:center;gap:12px;min-width:210px;padding:15px 17px;display:flex}.result-block>span[data-v-7e705b21]:first-child{font-size:25px}.result-block>span[data-v-7e705b21]:last-child{flex-direction:column;display:flex}.result-block small[data-v-7e705b21]{font-size:10px}.result-block b[data-v-7e705b21]{margin-top:3px}.result-block.success[data-v-7e705b21]{color:#17664f;background:#eaf4f0;border-color:#25866a}.result-block.warning[data-v-7e705b21]{color:#8d5b16;background:#fbf2e3;border-color:#c08026}.detail-layout[data-v-7e705b21]{grid-template-columns:minmax(0,1fr) 330px;gap:16px;display:grid}.timeline-panel[data-v-7e705b21]{min-height:560px;padding:22px 24px}.section-title[data-v-7e705b21]{justify-content:space-between;align-items:baseline;gap:12px;margin-bottom:22px;display:flex}.section-title span[data-v-7e705b21]{font-weight:700}.section-title small[data-v-7e705b21]{color:var(--muted);font-size:11px}.run-timeline[data-v-7e705b21]{padding-top:5px}.event-head[data-v-7e705b21]{align-items:center;gap:9px;min-height:27px;display:flex}.event-head time[data-v-7e705b21]{color:#8b9691;margin-left:auto;font-size:11px}.run-timeline p[data-v-7e705b21]{color:#56635d;margin:8px 0 0;line-height:1.65}.event-answers[data-v-7e705b21]{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:10px;display:grid}.event-answers span[data-v-7e705b21]{background:#f4f7f5;border-left:2px solid #a6cbbd;justify-content:space-between;gap:10px;padding:8px 10px;display:flex}.event-answers small[data-v-7e705b21]{color:var(--muted)}.event-answers b[data-v-7e705b21]{font-size:12px}.detail-aside[data-v-7e705b21]{flex-direction:column;gap:16px;display:flex}.summary-panel[data-v-7e705b21],.answer-panel[data-v-7e705b21]{padding:20px}.summary-panel dl[data-v-7e705b21]{margin:0}.summary-panel dl>div[data-v-7e705b21]{border-bottom:1px solid #edf0ee;justify-content:space-between;gap:15px;padding:10px 0;display:flex}.summary-panel dl>div[data-v-7e705b21]:last-child{border-bottom:0}.summary-panel dt[data-v-7e705b21]{color:var(--muted);font-size:12px}.summary-panel dd[data-v-7e705b21]{text-align:right;margin:0;font-size:12px}.answer-list>div[data-v-7e705b21]{border-bottom:1px solid #edf0ee;flex-direction:column;padding:10px 0;display:flex}.answer-list>div[data-v-7e705b21]:last-child{border-bottom:0}.answer-list span[data-v-7e705b21]{color:var(--muted);font-size:11px}.answer-list b[data-v-7e705b21]{margin-top:4px;font-size:13px}.aside-empty[data-v-7e705b21]{color:#929d98;text-align:center;padding:24px 0;font-size:12px}.feedback-band[data-v-7e705b21]{margin-top:16px;padding:22px 24px}.feedback-list[data-v-7e705b21]{grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;display:grid}.feedback-list article[data-v-7e705b21]{border-top:1px solid var(--line);padding:14px 0}.feedback-list article>div[data-v-7e705b21]{justify-content:space-between;align-items:center;display:flex}.feedback-list[data-v-7e705b21] .ant-rate{font-size:15px}.feedback-list p[data-v-7e705b21]{color:#54615b;margin:9px 0}.feedback-list time[data-v-7e705b21]{color:#929d98;font-size:11px}.feedback-form[data-v-7e705b21]{border-top:1px solid var(--line);grid-template-columns:220px minmax(0,1fr) auto;align-items:center;gap:14px;padding-top:16px;display:grid}.feedback-form>div[data-v-7e705b21]{flex-direction:column;gap:6px;display:flex}.feedback-form>div>span[data-v-7e705b21]{font-size:12px;font-weight:650}.feedback-form[data-v-7e705b21] .ant-rate{font-size:20px}@media (width<=900px){.detail-layout[data-v-7e705b21]{grid-template-columns:1fr}.detail-aside[data-v-7e705b21]{grid-template-columns:1fr 1fr;display:grid}.feedback-form[data-v-7e705b21],.feedback-list[data-v-7e705b21]{grid-template-columns:1fr}}@media (width<=620px){.detail-heading[data-v-7e705b21]{flex-direction:column;align-items:flex-start}.result-block[data-v-7e705b21]{width:100%}.detail-aside[data-v-7e705b21]{grid-template-columns:1fr}.timeline-panel[data-v-7e705b21]{padding:18px}.event-head[data-v-7e705b21]{flex-wrap:wrap;align-items:flex-start}.event-head time[data-v-7e705b21]{width:100%;margin:0}.event-answers[data-v-7e705b21]{grid-template-columns:1fr}}.event-knowledge[data-v-7e705b21]{border-left:3px solid var(--green);background:#f2f7f5;margin-top:10px;padding:12px 14px}.event-knowledge>div[data-v-7e705b21]{justify-content:space-between;gap:12px;display:flex}.event-knowledge small[data-v-7e705b21]{color:var(--muted)}.event-knowledge .risk-note[data-v-7e705b21]{color:#8d5b16;border-top:1px solid #dce9e4;padding-top:8px}.final-result[data-v-7e705b21]{color:#33413b;white-space:pre-wrap;overflow-wrap:anywhere;background:#f4f7f5;max-height:280px;margin:0;padding:12px;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;overflow:auto} diff --git a/web/dist/assets/RunDetailView-q8rVi8Ga.js b/web/dist/assets/RunDetailView-q8rVi8Ga.js new file mode 100644 index 0000000..25de7ce --- /dev/null +++ b/web/dist/assets/RunDetailView-q8rVi8Ga.js @@ -0,0 +1 @@ +import{A as e,Bt as t,D as n,F as r,I as i,O as a,P as o,Q as s,S as c,Tt as l,Y as u,_t as d,et as f,i as p,j as m,k as h,lt as g,n as _,r as v,t as y,tt as b,vt as x,zt as S}from"./client-Bk7n1O1W.js";import{a as C}from"./config-provider-B-t02-Z0.js";import{t as w}from"./auth-D6Tj4g1X.js";import{t as ee}from"./ArrowLeftOutlined-B1KoeknA.js";import{t as te}from"./SafetyCertificateOutlined-B1v8On0u.js";import{h as ne,m as re}from"./useApi-CROJJdhE-C8LJOf_8.js";var T={class:`page-shell run-detail-page`},E={class:`detail-heading`},D={class:`run-code`},ie={class:`detail-layout`},ae={class:`surface timeline-panel`},oe={class:`event-head`},se={key:0},ce={key:1,class:`event-answers`},O={class:`detail-aside`},k={class:`surface summary-panel`},A={class:`surface answer-panel`},j={class:`section-title`},M={key:0,class:`answer-list`},N={key:1,class:`aside-empty`},P={class:`surface answer-panel`},F={key:0,class:`final-result`},I={key:1,class:`aside-empty`},L={class:`surface feedback-band`},R={key:0,class:`feedback-list`},z={key:1,class:`feedback-form`},B={key:2,class:`aside-empty`},V=v(i({__name:`RunDetailView`,setup(i){let v=re(),V=ne(),H=w(),U=x(!0),W=x(null),G=x(!1),K=d({score:5,comment:``}),q=n(()=>new Map((W.value?.fields||[]).map(e=>[e.field_key,e.field_name]))),J=n(()=>Object.entries(W.value?.run.answers||{})),Y=n(()=>W.value?.run.final_result||null),X=n(()=>H.can(`runs.feedback`)&&W.value?.run.status===`completed`&&!W.value.feedback.some(e=>e.user_id===H.user?.user_id));function le(e){return{finish:`正常结束`,escalate:`转人工 / 转诊`,manual:`人工结束`}[e]||e||`进行中`}function ue(e){return{start:`开始执行`,enter:`进入节点`,answer:`提交回答`,finish:`结束执行`,final_result:`保存最终结果`}[e]||e}function Z(e){return e===!0?`是`:e===!1?`否`:Array.isArray(e)?e.join(`、`):e==null||e===``?`-`:String(e)}function Q(e){let t=e.payload?.answers||{};return Object.entries(t)}async function $(){U.value=!0;try{W.value=await y.get(`/runs/${v.params.id}/detail`)}catch(e){C.error(_(e)),V.replace(`/runs`)}finally{U.value=!1}}async function de(){G.value=!0;try{await y.post(`/runs/${v.params.id}/feedback`,K),C.success(`反馈已提交`),await $()}catch(e){C.error(_(e))}finally{G.value=!1}}return u($),(n,i)=>{let u=b(`a-button`),d=b(`a-tag`),_=b(`a-timeline-item`),v=b(`a-timeline`),y=b(`a-rate`),x=b(`a-textarea`),C=b(`a-spin`);return s(),m(`div`,T,[r(u,{type:`link`,class:`back-link`,onClick:i[0]||=e=>l(V).push(`/runs`)},{default:g(()=>[r(l(ee)),i[3]||=o(`返回执行记录`,-1)]),_:1}),r(C,{spinning:U.value},{default:g(()=>[W.value?(s(),m(c,{key:0},[a(`header`,E,[a(`div`,null,[a(`div`,D,`RUN-`+t(String(W.value.run.id).padStart(5,`0`)),1),a(`h1`,null,t(W.value.run.sop_name),1),a(`p`,null,t(W.value.run.scenario_name)+` · `+t(W.value.run.operator_name),1)]),a(`div`,{class:S([`result-block`,W.value.run.result===`escalate`?`warning`:`success`])},[W.value.run.result===`escalate`?(s(),h(l(te),{key:0})):(s(),h(l(p),{key:1})),a(`span`,null,[a(`small`,null,t(W.value.run.status===`completed`?`执行结果`:`当前状态`),1),a(`b`,null,t(le(W.value.run.result)),1)])],2)]),a(`section`,ie,[a(`main`,ae,[i[4]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行轨迹`),a(`small`,null,`按实际发生顺序记录`)],-1),r(v,{class:`run-timeline`},{default:g(()=>[(s(!0),m(c,null,f(W.value.events,n=>(s(),h(_,{key:n.id,color:n.action===`finish`||n.node_type===`escalate`?`red`:n.action===`answer`?`blue`:`green`},{default:g(()=>[a(`div`,oe,[a(`b`,null,t(n.node_title||n.node_key),1),r(d,null,{default:g(()=>[o(t(ue(n.action)),1)]),_:2},1024),a(`time`,null,t(new Date(n.created_at).toLocaleString(`zh-CN`)),1)]),n.action===`enter`&&n.node_content?(s(),m(`p`,se,t(n.node_content),1)):e(``,!0),(s(!0),m(c,null,f(n.outputs||[],e=>(s(),m(`div`,{key:e.key,class:`event-knowledge`},[a(`div`,null,[a(`b`,null,t(e.name),1),a(`small`,null,t(e.type),1)]),(s(!0),m(c,null,f(e.relations,(e,n)=>(s(),m(`div`,{key:n},[a(`p`,null,[a(`b`,null,t(n),1)]),(s(!0),m(c,null,f(e,e=>(s(),m(`p`,{key:e.key},t(e.content.template||e.content.standard_copy||e.name),1))),128))]))),128))]))),128)),Q(n).length?(s(),m(`div`,ce,[(s(!0),m(c,null,f(Q(n),([e,n])=>(s(),m(`span`,{key:e},[a(`small`,null,t(q.value.get(e)||e),1),a(`b`,null,t(Z(n)),1)]))),128))])):e(``,!0)]),_:2},1032,[`color`]))),128))]),_:1})]),a(`aside`,O,[a(`section`,k,[i[9]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行信息`)],-1),a(`dl`,null,[a(`div`,null,[i[5]||=a(`dt`,null,`状态`,-1),a(`dd`,null,[r(d,{color:W.value.run.status===`completed`?`green`:`orange`},{default:g(()=>[o(t(W.value.run.status===`completed`?`已完成`:`进行中`),1)]),_:1},8,[`color`])])]),a(`div`,null,[i[6]||=a(`dt`,null,`开始时间`,-1),a(`dd`,null,t(new Date(W.value.run.started_at).toLocaleString(`zh-CN`)),1)]),a(`div`,null,[i[7]||=a(`dt`,null,`完成时间`,-1),a(`dd`,null,t(W.value.run.completed_at?new Date(W.value.run.completed_at).toLocaleString(`zh-CN`):`-`),1)]),a(`div`,null,[i[8]||=a(`dt`,null,`当前节点`,-1),a(`dd`,null,t(W.value.run.current_node_key),1)])])]),a(`section`,A,[a(`div`,j,[i[10]||=a(`span`,null,`已采集信息`,-1),a(`small`,null,t(J.value.length)+` 项`,1)]),J.value.length?(s(),m(`div`,M,[(s(!0),m(c,null,f(J.value,([e,n])=>(s(),m(`div`,{key:e},[a(`span`,null,t(q.value.get(e)||e),1),a(`b`,null,t(Z(n)),1)]))),128))])):(s(),m(`div`,N,`尚未采集字段`))]),a(`section`,P,[i[11]||=a(`div`,{class:`section-title`},[a(`span`,null,`最终结果`)],-1),Y.value?(s(),m(`pre`,F,t(JSON.stringify(Y.value,null,2)),1)):(s(),m(`div`,I,`本次执行未收集最终结果`))])])]),a(`section`,L,[i[14]||=a(`div`,{class:`section-title`},[a(`span`,null,`执行反馈`),a(`small`,null,`用于判断 SOP 是否清晰、有效`)],-1),W.value.feedback.length?(s(),m(`div`,R,[(s(!0),m(c,null,f(W.value.feedback,e=>(s(),m(`article`,{key:e.id},[a(`div`,null,[a(`b`,null,t(e.user_name),1),r(y,{value:e.score,disabled:``},null,8,[`value`])]),a(`p`,null,t(e.comment||`未填写补充说明`),1),a(`time`,null,t(new Date(e.created_at).toLocaleString(`zh-CN`)),1)]))),128))])):e(``,!0),X.value?(s(),m(`div`,z,[a(`div`,null,[i[12]||=a(`span`,null,`本次 SOP 是否好用?`,-1),r(y,{value:K.score,"onUpdate:value":i[1]||=e=>K.score=e},null,8,[`value`])]),r(x,{value:K.comment,"onUpdate:value":i[2]||=e=>K.comment=e,rows:3,maxlength:2e3,"show-count":``,placeholder:`记录不顺畅的步骤、缺失信息或有效话术。`},null,8,[`value`]),r(u,{type:`primary`,loading:G.value,onClick:de},{default:g(()=>[...i[13]||=[o(`提交反馈`,-1)]]),_:1},8,[`loading`])])):e(``,!0),!W.value.feedback.length&&!X.value?(s(),m(`div`,B,`暂无反馈`)):e(``,!0)])],64)):e(``,!0)]),_:1},8,[`spinning`])])}}}),[[`__scopeId`,`data-v-7e705b21`]]);export{V as default}; \ No newline at end of file diff --git a/web/dist/assets/index-Cu-5ZSv-.js b/web/dist/assets/index-B4FSNTVt.js similarity index 99% rename from web/dist/assets/index-Cu-5ZSv-.js rename to web/dist/assets/index-B4FSNTVt.js index 255efa6..0428011 100644 --- a/web/dist/assets/index-Cu-5ZSv-.js +++ b/web/dist/assets/index-B4FSNTVt.js @@ -1,4 +1,4 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-DMG0bZF-.js","assets/client-Bk7n1O1W.js","assets/config-provider-B-t02-Z0.js","assets/auth-D6Tj4g1X.js","assets/useApi-CROJJdhE-C8LJOf_8.js","assets/LoginView-Fff71f7Q.css","assets/DashboardView-Vhr2bwL8.js","assets/PlusOutlined-CosM7zFe.js","assets/AppstoreOutlined-BD2QJkU0.js","assets/PlayCircleOutlined-DjeS67m_.js","assets/DashboardView-CFwHesUj.css","assets/ScenariosView-BYT1rTBj.js","assets/SearchOutlined-D6c8vQZ_.js","assets/ScenariosView-CVjBqUT9.css","assets/ScenarioDetailView-svKKSu2G.js","assets/modal-Dwr7ZWlh.js","assets/ArrowLeftOutlined-B1KoeknA.js","assets/DeleteOutlined-Bt9-1HZZ.js","assets/EditOutlined-BIUW-zYI.js","assets/SaveOutlined-BbHZub0N.js","assets/ScenarioDetailView-CMMv-gnv.css","assets/SOPEditorView-CNOWYqSp.js","assets/SOPEditorView-Cp_YrNIF.css","assets/ExecuteView-CAUSQPH9.js","assets/CopyOutlined-lDB-4CmK.js","assets/SafetyCertificateOutlined-B1v8On0u.js","assets/ExecuteView-D6wWGKCU.css","assets/RunHistoryView-Dh9SlbUl.js","assets/ReloadOutlined-Cih9hKpY.js","assets/RunHistoryView-De1_-1wD.css","assets/RunDetailView-BFxue3EE.js","assets/RunDetailView-D7a859PI.css","assets/MembersView-CJIp3zFH.js","assets/TeamOutlined-DCK_-ckK.js","assets/MembersView-BSaD6Qkq.css"])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["assets/LoginView-DMG0bZF-.js","assets/client-Bk7n1O1W.js","assets/config-provider-B-t02-Z0.js","assets/auth-D6Tj4g1X.js","assets/useApi-CROJJdhE-C8LJOf_8.js","assets/LoginView-Fff71f7Q.css","assets/DashboardView-Vhr2bwL8.js","assets/PlusOutlined-CosM7zFe.js","assets/AppstoreOutlined-BD2QJkU0.js","assets/PlayCircleOutlined-DjeS67m_.js","assets/DashboardView-CFwHesUj.css","assets/ScenariosView-BYT1rTBj.js","assets/SearchOutlined-D6c8vQZ_.js","assets/ScenariosView-CVjBqUT9.css","assets/ScenarioDetailView-svKKSu2G.js","assets/modal-Dwr7ZWlh.js","assets/ArrowLeftOutlined-B1KoeknA.js","assets/DeleteOutlined-Bt9-1HZZ.js","assets/EditOutlined-BIUW-zYI.js","assets/SaveOutlined-BbHZub0N.js","assets/ScenarioDetailView-CMMv-gnv.css","assets/SOPEditorView-CNOWYqSp.js","assets/SOPEditorView-Cp_YrNIF.css","assets/ExecuteView-DJveuZjr.js","assets/CopyOutlined-lDB-4CmK.js","assets/SafetyCertificateOutlined-B1v8On0u.js","assets/ExecuteView-B07inVPa.css","assets/RunHistoryView-Dh9SlbUl.js","assets/ReloadOutlined-Cih9hKpY.js","assets/RunHistoryView-De1_-1wD.css","assets/RunDetailView-q8rVi8Ga.js","assets/RunDetailView-D7ydL_xd.css","assets/MembersView-CJIp3zFH.js","assets/TeamOutlined-DCK_-ckK.js","assets/MembersView-BSaD6Qkq.css"])))=>i.map(i=>d[i]); import{$ as e,A as t,Bt as n,C as r,Ct as i,D as a,E as o,F as s,G as c,H as l,Ht as u,I as d,J as f,K as p,L as m,O as h,P as g,Q as _,S as v,St as y,Tt as b,U as x,Ut as S,V as C,W as w,Wt as T,X as E,Y as D,Z as O,_t as k,a as A,at as j,bt as M,c as N,ct as P,ft as F,gt as I,i as L,j as ee,k as R,lt as z,mt as B,nt as te,q as V,r as ne,s as re,st as H,tt as U,ut as ie,vt as W,w as ae,wt as oe,xt as se,yt as ce,z as le,zt as ue}from"./client-Bk7n1O1W.js";import{$ as de,$t as G,A as fe,At as pe,B as me,Bt as he,C as ge,Ct as _e,D as K,Dt as ve,E as ye,Et as be,F as xe,Ft as Se,G as Ce,Gt as we,H as Te,Ht as Ee,I as De,It as Oe,J as ke,Jt as Ae,K as je,Kt as Me,L as Ne,Lt as Pe,M as Fe,Mt as Ie,N as Le,Nt as Re,O as ze,Ot as Be,P as Ve,Pt as He,Q as Ue,Qt as We,R as Ge,Rt as Ke,S as qe,St as q,T as J,Tt as Je,U as Ye,Ut as Xe,V as Ze,Vt as Qe,W as $e,Wt as et,Xt as tt,Y as nt,Yt as rt,Zt as it,_ as at,_t as Y,a as ot,an as st,at as ct,b as lt,bt as ut,ct as dt,d as ft,dt as pt,en as X,et as mt,f as ht,ft as gt,g as _t,gt as vt,h as yt,ht as bt,i as xt,it as St,j as Ct,jt as wt,k as Tt,kt as Et,l as Dt,lt as Ot,m as kt,mt as At,nn as jt,nt as Mt,o as Nt,ot as Pt,p as Ft,pt as It,q as Lt,qt as Z,r as Rt,rn as zt,rt as Bt,s as Vt,sn as Ht,st as Ut,t as Wt,tn as Gt,tt as Kt,u as qt,ut as Jt,vt as Yt,w as Xt,wt as Zt,x as Qt,xt as $t,y as en,yt as Q,z as tn,zt as nn}from"./config-provider-B-t02-Z0.js";import{n as rn,t as an}from"./auth-D6Tj4g1X.js";import{$ as on,A as sn,B as cn,C as ln,D as $,E as un,F as dn,G as fn,H as pn,I as mn,J as hn,K as gn,L as _n,M as vn,N as yn,O as bn,P as xn,Q as Sn,R as Cn,S as wn,T as Tn,U as En,V as Dn,W as On,X as kn,Y as An,Z as jn,_ as Mn,a as Nn,at as Pn,b as Fn,c as In,ct as Ln,d as Rn,dt as zn,et as Bn,f as Vn,g as Hn,h as Un,i as Wn,j as Gn,k as Kn,l as qn,lt as Jn,m as Yn,n as Xn,nt as Zn,o as Qn,p as $n,q as er,r as tr,rt as nr,s as rr,st as ir,t as ar,tt as or,u as sr,ut as cr,v as lr,w as ur,x as dr,y as fr,z as pr}from"./modal-Dwr7ZWlh.js";import{t as mr}from"./SearchOutlined-D6c8vQZ_.js";import{n as hr,t as gr}from"./ReloadOutlined-Cih9hKpY.js";import{t as _r}from"./PlusOutlined-CosM7zFe.js";import{t as vr}from"./ArrowLeftOutlined-B1KoeknA.js";import{n as yr,t as br}from"./AppstoreOutlined-BD2QJkU0.js";import{t as xr}from"./DeleteOutlined-Bt9-1HZZ.js";import{t as Sr}from"./CopyOutlined-lDB-4CmK.js";import{t as Cr}from"./EditOutlined-BIUW-zYI.js";import{t as wr}from"./PlayCircleOutlined-DjeS67m_.js";import{t as Tr}from"./TeamOutlined-DCK_-ckK.js";import{a as Er,c as Dr,d as Or,f as kr,g as Ar,h as jr,i as Mr,l as Nr,m as Pr,n as Fr,o as Ir,p as Lr,r as Rr,s as zr,t as Br,u as Vr}from"./useApi-CROJJdhE-C8LJOf_8.js";(function(){let e=document.createElement(`link`).relList;if(e&&e.supports&&e.supports(`modulepreload`))return;for(let e of document.querySelectorAll(`link[rel="modulepreload"]`))n(e);new MutationObserver(e=>{for(let t of e)if(t.type===`childList`)for(let e of t.addedNodes)e.tagName===`LINK`&&e.rel===`modulepreload`&&n(e)}).observe(document,{childList:!0,subtree:!0});function t(e){let t={};return e.integrity&&(t.integrity=e.integrity),e.referrerPolicy&&(t.referrerPolicy=e.referrerPolicy),t.credentials=e.crossOrigin===`use-credentials`?`include`:e.crossOrigin===`anonymous`?`omit`:`same-origin`,t}function n(e){if(e.ep)return;e.ep=!0;let n=t(e);fetch(e.href,n)}})();var Hr=(function(){if(typeof Map<`u`)return Map;function e(e,t){var n=-1;return e.some(function(e,r){return e[0]===t&&(n=r,!0)}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(t){var n=e(this.__entries__,t),r=this.__entries__[n];return r&&r[1]},t.prototype.set=function(t,n){var r=e(this.__entries__,t);~r?this.__entries__[r][1]=n:this.__entries__.push([t,n])},t.prototype.delete=function(t){var n=this.__entries__,r=e(n,t);~r&&n.splice(r,1)},t.prototype.has=function(t){return!!~e(this.__entries__,t)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(e,t){t===void 0&&(t=null);for(var n=0,r=this.__entries__;n0},e.prototype.connect_=function(){!Ur||this.connected_||(document.addEventListener(`transitionend`,this.onTransitionEnd_),window.addEventListener(`resize`,this.refresh),Xr?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener(`DOMSubtreeModified`,this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Ur||!this.connected_||(document.removeEventListener(`transitionend`,this.onTransitionEnd_),window.removeEventListener(`resize`,this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener(`DOMSubtreeModified`,this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(e){var t=e.propertyName,n=t===void 0?``:t;Yr.some(function(e){return!!~n.indexOf(e)})&&this.refresh()},e.getInstance=function(){return this.instance_||=new e,this.instance_},e.instance_=null,e}(),Qr=(function(e,t){for(var n=0,r=Object.keys(t);n`u`||!(Element instanceof Object))){if(!(e instanceof $r(e).Element))throw TypeError(`parameter 1 is not of type "Element".`);var t=this.observations_;t.has(e)||(t.set(e,new di(e)),this.controller_.addObserver(this),this.controller_.refresh())}},e.prototype.unobserve=function(e){if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);if(!(typeof Element>`u`||!(Element instanceof Object))){if(!(e instanceof $r(e).Element))throw TypeError(`parameter 1 is not of type "Element".`);var t=this.observations_;t.has(e)&&(t.delete(e),t.size||this.controller_.removeObserver(this))}},e.prototype.disconnect=function(){this.clearActive(),this.observations_.clear(),this.controller_.removeObserver(this)},e.prototype.gatherActive=function(){var e=this;this.clearActive(),this.observations_.forEach(function(t){t.isActive()&&e.activeObservations_.push(t)})},e.prototype.broadcastActive=function(){if(this.hasActive()){var e=this.callbackCtx_,t=this.activeObservations_.map(function(e){return new fi(e.target,e.broadcastRect())});this.callback_.call(e,t,e),this.clearActive()}},e.prototype.clearActive=function(){this.activeObservations_.splice(0)},e.prototype.hasActive=function(){return this.activeObservations_.length>0},e}(),mi=typeof WeakMap<`u`?new WeakMap:new Hr,hi=function(){function e(t){if(!(this instanceof e))throw TypeError(`Cannot call a class as a function.`);if(!arguments.length)throw TypeError(`1 argument required, but only 0 present.`);var n=new pi(t,Zr.getInstance(),this);mi.set(this,n)}return e}();[`observe`,`unobserve`,`disconnect`].forEach(function(e){hi.prototype[e]=function(){var t;return(t=mi.get(this))[e].apply(t,arguments)}});var gi=(function(){return Wr.ResizeObserver===void 0?hi:Wr.ResizeObserver})(),_i=d({compatConfig:{MODE:3},name:`ResizeObserver`,props:{disabled:Boolean,onResize:Function},emits:[`resize`],setup(e,t){let{slots:n}=t,r=k({width:0,height:0,offsetHeight:0,offsetWidth:0}),i=null,a=null,o=()=>{a&&=(a.disconnect(),null)},s=t=>{let{onResize:n}=e,i=t[0].target,{width:a,height:o}=i.getBoundingClientRect(),{offsetWidth:s,offsetHeight:c}=i,l=Math.floor(a),u=Math.floor(o);if(r.width!==l||r.height!==u||r.offsetWidth!==s||r.offsetHeight!==c){let e={width:l,height:u,offsetWidth:s,offsetHeight:c};G(r,e),n&&Promise.resolve().then(()=>{n(G(G({},e),{offsetWidth:s,offsetHeight:c}),i)})}},c=m(),l=()=>{let{disabled:t}=e;if(t){o();return}let n=Et(c);n!==i&&(o(),i=n),!a&&n&&(a=new gi(s),a.observe(n))};return D(()=>{l()}),O(()=>{l()}),E(()=>{o()}),H(()=>e.disabled,()=>{l()},{flush:`post`}),()=>n.default?.call(n)[0]}});function vi(e){let t,n=n=>()=>{t=null,e(...n)},r=function(){t??=cr(n([...arguments]))};return r.cancel=()=>{cr.cancel(t),t=null},r}function yi(e){return e===window?{top:0,bottom:window.innerHeight}:e.getBoundingClientRect()}function bi(e,t,n){if(n!==void 0&&t.top>e.top-n)return`${n+t.top}px`}function xi(e,t,n){if(n!==void 0&&t.bottomt.target===e);n?n.affixList.push(t):(n={target:e,affixList:[t],eventHandlers:{}},Ci.push(n),Si.forEach(t=>{n.eventHandlers[t]=Ln(e,t,()=>{n.affixList.forEach(e=>{let{lazyUpdatePosition:t}=e.exposed;t()},(t===`touchstart`||t===`touchmove`)&&Jn?{passive:!0}:!1)})}))}function Ti(e){let t=Ci.find(t=>{let n=t.affixList.some(t=>t===e);return n&&(t.affixList=t.affixList.filter(t=>t!==e)),n});t&&t.affixList.length===0&&(Ci=Ci.filter(e=>e!==t),Si.forEach(e=>{let n=t.eventHandlers[e];n&&n.remove&&n.remove()}))}function Ei(e,t){let{path:n,parentSelectors:r}=t;ir(!1,`[Ant Design Vue CSS-in-JS] ${n?`Error in '${n}': `:``}${e}${r.length?` Selector info: ${r.join(` -> `)}`:``}`)}function Di(e){return(e.match(/:not\(([^)]*)\)/)?.[1]||``).split(/(\[[^[]*])|(?=[.#])/).filter(e=>e).length>1}function Oi(e){return e.parentSelectors.reduce((e,t)=>e?t.includes(`&`)?t.replace(/&/g,e):`${e} ${t}`:t,``)}var ki=(e,t,n)=>{let r=Oi(n).match(/:not\([^)]*\)/g)||[];r.length>0&&r.some(Di)&&Ei(`Concat ':not' selector not support in legacy browsers.`,n)},Ai=(e,t,n)=>{switch(e){case`marginLeft`:case`marginRight`:case`paddingLeft`:case`paddingRight`:case`left`:case`right`:case`borderLeft`:case`borderLeftWidth`:case`borderLeftStyle`:case`borderLeftColor`:case`borderRight`:case`borderRightWidth`:case`borderRightStyle`:case`borderRightColor`:case`borderTopLeftRadius`:case`borderTopRightRadius`:case`borderBottomLeftRadius`:case`borderBottomRightRadius`:Ei(`You seem to be using non-logical property '${e}' which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return;case`margin`:case`padding`:case`borderWidth`:case`borderStyle`:if(typeof t==`string`){let r=t.split(` `).map(e=>e.trim());r.length===4&&r[1]!==r[3]&&Ei(`You seem to be using '${e}' property with different left ${e} and right ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n)}return;case`clear`:case`textAlign`:(t===`left`||t===`right`)&&Ei(`You seem to be using non-logical value '${t}' of ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return;case`borderRadius`:typeof t==`string`&&t.split(`/`).map(e=>e.trim()).reduce((e,t)=>{if(e)return e;let n=t.split(` `).map(e=>e.trim());return n.length>=2&&n[0]!==n[1]||n.length===3&&n[1]!==n[2]||n.length===4&&n[2]!==n[3]||e},!1)&&Ei(`You seem to be using non-logical value '${t}' of ${e}, which is not compatible with RTL mode. Please use logical properties and values instead. For more information: https://developer.mozilla.org/en-US/docs/Web/CSS/CSS_Logical_Properties.`,n);return}},ji=(e,t,n)=>{n.parentSelectors.some(e=>e.split(`,`).some(e=>e.split(`&`).length>2))&&Ei("Should not use more than one `&` in a selector.",n)};function Mi(e){if(typeof e==`number`)return[e];let t=String(e).split(/\s+/),n=``,r=0;return t.reduce((e,t)=>(t.includes(`(`)?(n+=t,r+=t.split(`(`).length-1):t.includes(`)`)?(n+=` ${t}`,r-=t.split(`)`).length-1,r===0&&(e.push(n),n=``)):r>0?n+=` ${t}`:e.push(t),e),[])}function Ni(e){return e.notSplit=!0,e}var Pi={inset:[`top`,`right`,`bottom`,`left`],insetBlock:[`top`,`bottom`],insetBlockStart:[`top`],insetBlockEnd:[`bottom`],insetInline:[`left`,`right`],insetInlineStart:[`left`],insetInlineEnd:[`right`],marginBlock:[`marginTop`,`marginBottom`],marginBlockStart:[`marginTop`],marginBlockEnd:[`marginBottom`],marginInline:[`marginLeft`,`marginRight`],marginInlineStart:[`marginLeft`],marginInlineEnd:[`marginRight`],paddingBlock:[`paddingTop`,`paddingBottom`],paddingBlockStart:[`paddingTop`],paddingBlockEnd:[`paddingBottom`],paddingInline:[`paddingLeft`,`paddingRight`],paddingInlineStart:[`paddingLeft`],paddingInlineEnd:[`paddingRight`],borderBlock:Ni([`borderTop`,`borderBottom`]),borderBlockStart:Ni([`borderTop`]),borderBlockEnd:Ni([`borderBottom`]),borderInline:Ni([`borderLeft`,`borderRight`]),borderInlineStart:Ni([`borderLeft`]),borderInlineEnd:Ni([`borderRight`]),borderBlockWidth:[`borderTopWidth`,`borderBottomWidth`],borderBlockStartWidth:[`borderTopWidth`],borderBlockEndWidth:[`borderBottomWidth`],borderInlineWidth:[`borderLeftWidth`,`borderRightWidth`],borderInlineStartWidth:[`borderLeftWidth`],borderInlineEndWidth:[`borderRightWidth`],borderBlockStyle:[`borderTopStyle`,`borderBottomStyle`],borderBlockStartStyle:[`borderTopStyle`],borderBlockEndStyle:[`borderBottomStyle`],borderInlineStyle:[`borderLeftStyle`,`borderRightStyle`],borderInlineStartStyle:[`borderLeftStyle`],borderInlineEndStyle:[`borderRightStyle`],borderBlockColor:[`borderTopColor`,`borderBottomColor`],borderBlockStartColor:[`borderTopColor`],borderBlockEndColor:[`borderBottomColor`],borderInlineColor:[`borderLeftColor`,`borderRightColor`],borderInlineStartColor:[`borderLeftColor`],borderInlineEndColor:[`borderRightColor`],borderStartStartRadius:[`borderTopLeftRadius`],borderStartEndRadius:[`borderTopRightRadius`],borderEndStartRadius:[`borderBottomLeftRadius`],borderEndEndRadius:[`borderBottomRightRadius`]};function Fi(e){return{_skip_check_:!0,value:e}}var Ii={visit:e=>{let t={};return Object.keys(e).forEach(n=>{let r=e[n],i=Pi[n];if(i&&(typeof r==`number`||typeof r==`string`)){let e=Mi(r);i.length&&i.notSplit?i.forEach(e=>{t[e]=Fi(r)}):i.length===1?t[i[0]]=Fi(r):i.length===2?i.forEach((n,r)=>{t[n]=Fi(e[r]??e[0])}):i.length===4?i.forEach((n,r)=>{t[n]=Fi(e[r]??e[r-2]??e[0])}):t[n]=r}else t[n]=r}),t}},Li=/url\([^)]+\)|var\([^)]+\)|(\d*\.?\d+)px/g;function Ri(e,t){let n=10**(t+1),r=Math.floor(e*n);return Math.round(r/10)*10/n}var zi={Theme:ke,createTheme:Lt,useStyleRegister:$e,useCacheToken:je,createCache:Kt,useStyleInject:Mt,useStyleProvider:Bt,Keyframes:Te,extractStyle:Ye,legacyLogicalPropertiesTransformer:Ii,px2remTransformer:function(){let{rootValue:e=16,precision:t=5,mediaQuery:n=!1}=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},r=(n,r)=>{if(!r)return n;let i=parseFloat(r);return i<=1?n:`${Ri(i/e,t)}rem`};return{visit:e=>{let t=G({},e);return Object.entries(e).forEach(e=>{let[i,a]=e;if(typeof a==`string`&&a.includes(`px`)){let e=a.replace(Li,r);t[i]=e}!Ce[i]&&typeof a==`number`&&a!==0&&(t[i]=`${a}px`.replace(Li,r));let o=i.trim();if(o.startsWith(`@`)&&o.includes(`px`)&&n){let e=i.replace(Li,r);t[e]=t[i],delete t[i]}}),t}}},logicalPropertiesLinter:Ai,legacyNotSelectorLinter:ki,parentSelectorLinter:ji,StyleProvider:mt},Bi=[`blue`,`purple`,`cyan`,`green`,`magenta`,`pink`,`red`,`orange`,`yellow`,`volcano`,`geekblue`,`lime`,`gold`],Vi=e=>({color:e.colorLink,textDecoration:`none`,outline:`none`,cursor:`pointer`,transition:`color ${e.motionDurationSlow}`,"&:focus, &:hover":{color:e.colorLinkHover},"&:active":{color:e.colorLinkActive}}),Hi=(e,t,n,r,i)=>{let a=e/2,o=a,s=n*1/Math.sqrt(2),c=a-n*(1-1/Math.sqrt(2)),l=a-1/Math.sqrt(2)*t,u=n*(Math.sqrt(2)-1)+1/Math.sqrt(2)*t,d=2*a-l,f=u,p=2*a-s,m=c,h=2*a-0,g=o,_=a*Math.sqrt(2)+n*(Math.sqrt(2)-2),v=n*(Math.sqrt(2)-1);return{pointerEvents:`none`,width:e,height:e,overflow:`hidden`,"&::after":{content:`""`,position:`absolute`,width:_,height:_,bottom:0,insetInline:0,margin:`auto`,borderRadius:{_skip_check_:!0,value:`0 0 ${t}px 0`},transform:`translateY(50%) rotate(-135deg)`,boxShadow:i,zIndex:0,background:`transparent`},"&::before":{position:`absolute`,bottom:0,insetInlineStart:0,width:e,height:e/2,background:r,clipPath:{_multi_value_:!0,value:[`polygon(${v}px 100%, 50% ${v}px, ${2*a-v}px 100%, ${v}px 100%)`,`path('M 0 ${o} A ${n} ${n} 0 0 0 ${s} ${c} L ${l} ${u} A ${t} ${t} 0 0 1 ${d} ${f} L ${p} ${m} A ${n} ${n} 0 0 0 ${h} ${g} Z')`]},content:`""`}}};function Ui(e,t){return Bi.reduce((n,r)=>{let i=e[`${r}-1`],a=e[`${r}-3`],o=e[`${r}-6`],s=e[`${r}-7`];return G(G({},n),t(r,{lightColor:i,lightBorderColor:a,darkColor:o,textColor:s}))},{})}var Wi=e=>{let{componentCls:t}=e;return{[t]:{position:`fixed`,zIndex:e.zIndexPopup}}},Gi=Le(`Affix`,e=>[Wi(Fe(e,{zIndexPopup:e.zIndexBase+10}))]);function Ki(){return typeof window<`u`?window:null}var qi;(function(e){e[e.None=0]=`None`,e[e.Prepare=1]=`Prepare`})(qi||={});var Ji=d({compatConfig:{MODE:3},name:`AAffix`,inheritAttrs:!1,props:{offsetTop:Number,offsetBottom:Number,target:{type:Function,default:Ki},prefixCls:String,onChange:Function,onTestUpdatePosition:Function},setup(e,t){let{slots:n,emit:r,expose:i,attrs:o}=t,c=M(),l=M(),u=k({affixStyle:void 0,placeholderStyle:void 0,status:qi.None,lastAffix:!1,prevTarget:null,timeout:null}),d=m(),f=a(()=>e.offsetBottom===void 0&&e.offsetTop===void 0?0:e.offsetTop),p=a(()=>e.offsetBottom),h=()=>{let{status:t,lastAffix:n}=u,{target:i}=e;if(t!==qi.Prepare||!l.value||!c.value||!i)return;let a=i();if(!a)return;let o={status:qi.None},s=yi(c.value);if(s.top===0&&s.left===0&&s.width===0&&s.height===0)return;let d=yi(a),m=bi(s,d,f.value),h=xi(s,d,p.value);if(s.top!==0||s.left!==0||s.width!==0||s.height!==0){if(m!==void 0){let e=`${s.width}px`,t=`${s.height}px`;o.affixStyle={position:`fixed`,top:m,width:e,height:t},o.placeholderStyle={width:e,height:t}}else if(h!==void 0){let e=`${s.width}px`,t=`${s.height}px`;o.affixStyle={position:`fixed`,bottom:h,width:e,height:t},o.placeholderStyle={width:e,height:t}}o.lastAffix=!!o.affixStyle,n!==o.lastAffix&&r(`change`,o.lastAffix),G(u,o)}},g=()=>{G(u,{status:qi.Prepare,affixStyle:void 0,placeholderStyle:void 0})},_=vi(()=>{g()}),v=vi(()=>{let{target:t}=e,{affixStyle:n}=u;if(t&&n){let e=t();if(e&&c.value){let t=yi(e),r=yi(c.value),i=bi(r,t,f.value),a=xi(r,t,p.value);if(i!==void 0&&n.top===i||a!==void 0&&n.bottom===a)return}}g()});i({updatePosition:_,lazyUpdatePosition:v}),H(()=>e.target,e=>{let t=e?.()||null;u.prevTarget!==t&&(Ti(d),t&&(wi(t,d),_()),u.prevTarget=t)}),H(()=>[e.offsetTop,e.offsetBottom],_),D(()=>{let{target:t}=e;t&&(u.timeout=setTimeout(()=>{wi(t(),d),_()}))}),O(()=>{h()}),E(()=>{clearTimeout(u.timeout),Ti(d),_.cancel(),v.cancel()});let{prefixCls:y}=K(`affix`,e),[b,x]=Gi(y);return()=>{let{affixStyle:t,placeholderStyle:r,status:i}=u,a=Z({[y.value]:t,[x.value]:!0}),d=nr(e,[`prefixCls`,`offsetTop`,`offsetBottom`,`target`,`onChange`,`onTestUpdatePosition`]);return b(s(_i,{onResize:_},{default:()=>[s(`div`,X(X(X({},d),o),{},{ref:c,"data-measure-status":i}),[t&&s(`div`,{style:r,"aria-hidden":`true`},null),s(`div`,{class:a,ref:l,style:t},[n.default?.call(n)])])]}))}}}),Yi=be(Ji);function Xi(e){return typeof e==`object`&&!!e&&e.nodeType===1}function Zi(e,t){return(!t||e!==`hidden`)&&e!==`visible`&&e!==`clip`}function Qi(e,t){if(e.clientHeightt||a>e&&o=t&&s>=n?a-e-r:o>t&&sn?o-t+i:0}var ea=function(e,t){var n=window,r=t.scrollMode,i=t.block,a=t.inline,o=t.boundary,s=t.skipOverflowHiddenElements,c=typeof o==`function`?o:function(e){return e!==o};if(!Xi(e))throw TypeError(`Invalid target`);for(var l,u=document.scrollingElement||document.documentElement,d=[],f=e;Xi(f)&&c(f);){if((f=(l=f).parentElement??(l.getRootNode().host||null))===u){d.push(f);break}f!=null&&f===document.body&&Qi(f)&&!Qi(document.documentElement)||f!=null&&Qi(f,s)&&d.push(f)}for(var p=n.visualViewport?n.visualViewport.width:innerWidth,m=n.visualViewport?n.visualViewport.height:innerHeight,h=window.scrollX||pageXOffset,g=window.scrollY||pageYOffset,_=e.getBoundingClientRect(),v=_.height,y=_.width,b=_.top,x=_.right,S=_.bottom,C=_.left,w=i===`start`||i===`nearest`?b:i===`end`?S:b+v/2,T=a===`center`?C+y/2:a===`end`?x:C,E=[],D=0;D=0&&C>=0&&S<=m&&x<=p&&b>=M&&S<=P&&C>=F&&x<=N)return E;var I=getComputedStyle(O),L=parseInt(I.borderLeftWidth,10),ee=parseInt(I.borderTopWidth,10),R=parseInt(I.borderRightWidth,10),z=parseInt(I.borderBottomWidth,10),B=0,te=0,V=`offsetWidth`in O?O.offsetWidth-O.clientWidth-L-R:0,ne=`offsetHeight`in O?O.offsetHeight-O.clientHeight-ee-z:0,re=`offsetWidth`in O?O.offsetWidth===0?0:j/O.offsetWidth:0,H=`offsetHeight`in O?O.offsetHeight===0?0:A/O.offsetHeight:0;if(u===O)B=i===`start`?w:i===`end`?w-m:i===`nearest`?$i(g,g+m,m,ee,z,g+w,g+w+v,v):w-m/2,te=a===`start`?T:a===`center`?T-p/2:a===`end`?T-p:$i(h,h+p,p,L,R,h+T,h+T+y,y),B=Math.max(0,B+g),te=Math.max(0,te+h);else{B=i===`start`?w-M-ee:i===`end`?w-P+z+ne:i===`nearest`?$i(M,P,A,ee,z+ne,w,w+v,v):w-(M+A/2)+ne/2,te=a===`start`?T-F-L:a===`center`?T-(F+j/2)+V/2:a===`end`?T-N+R+V:$i(F,N,j,L,R+V,T,T+y,y);var U=O.scrollLeft,ie=O.scrollTop;w+=ie-(B=Math.max(0,Math.min(ie+B/H,O.scrollHeight-A/H+ne))),T+=U-(te=Math.max(0,Math.min(U+te/re,O.scrollWidth-j/re+V)))}E.push({el:O,top:B,left:te})}return E};function ta(e){return e===Object(e)&&Object.keys(e).length!==0}function na(e,t){t===void 0&&(t=`auto`);var n=`scrollBehavior`in document.body.style;e.forEach(function(e){var r=e.el,i=e.top,a=e.left;r.scroll&&n?r.scroll({top:i,left:a,behavior:t}):(r.scrollTop=i,r.scrollLeft=a)})}function ra(e){return e===!1?{block:`end`,inline:`nearest`}:ta(e)?e:{block:`start`,inline:`nearest`}}function ia(e,t){var n=e.isConnected||e.ownerDocument.documentElement.contains(e);if(ta(t)&&typeof t.behavior==`function`)return t.behavior(n?ea(e,t):[]);if(n){var r=ra(t);return na(ea(e,r),r.behavior)}}function aa(e,t,n,r){let i=n-t;return e/=r/2,e<1?i/2*e*e*e+t:i/2*((e-=2)*e*e+2)+t}function oa(e){return e!=null&&e===e.window}function sa(e,t){if(typeof window>`u`)return 0;let n=t?`scrollTop`:`scrollLeft`,r=0;return oa(e)?r=e[t?`scrollY`:`scrollX`]:e instanceof Document?r=e.documentElement[n]:(e instanceof HTMLElement||e)&&(r=e[n]),e&&!oa(e)&&typeof r!=`number`&&(r=(e.ownerDocument??e).documentElement?.[n]),r}function ca(e){let{getContainer:t=()=>window,callback:n,duration:r=450}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},i=t(),a=sa(i,!0),o=Date.now(),s=()=>{let t=Date.now()-o,c=aa(t>r?r:t,a,e,r);oa(i)?i.scrollTo(window.scrollX,c):i instanceof Document?i.documentElement.scrollTop=c:i.scrollTop=c,t{e(ua,t)},fa=()=>C(ua,{registerLink:la,unregisterLink:la,scrollTo:la,activeLink:a(()=>``),handleClick:la,direction:a(()=>`vertical`)}),pa=e=>{let{componentCls:t,holderOffsetBlock:n,motionDurationSlow:r,lineWidthBold:i,colorPrimary:a,lineType:o,colorSplit:s}=e;return{[`${t}-wrapper`]:{marginBlockStart:-n,paddingBlockStart:n,backgroundColor:`transparent`,[t]:G(G({},Ne(e)),{position:`relative`,paddingInlineStart:i,[`${t}-link`]:{paddingBlock:e.anchorPaddingBlock,paddingInline:`${e.anchorPaddingInline}px 0`,"&-title":G(G({},tn),{position:`relative`,display:`block`,marginBlockEnd:e.anchorTitleBlock,color:e.colorText,transition:`all ${e.motionDurationSlow}`,"&:only-child":{marginBlockEnd:0}}),[`&-active > ${t}-link-title`]:{color:e.colorPrimary},[`${t}-link`]:{paddingBlock:e.anchorPaddingBlockSecondary}}}),[`&:not(${t}-wrapper-horizontal)`]:{[t]:{"&::before":{position:`absolute`,left:{_skip_check_:!0,value:0},top:0,height:`100%`,borderInlineStart:`${i}px ${o} ${s}`,content:`" "`},[`${t}-ink`]:{position:`absolute`,left:{_skip_check_:!0,value:0},display:`none`,transform:`translateY(-50%)`,transition:`top ${r} ease-in-out`,width:i,backgroundColor:a,[`&${t}-ink-visible`]:{display:`inline-block`}}}},[`${t}-fixed ${t}-ink ${t}-ink`]:{display:`none`}}}},ma=e=>{let{componentCls:t,motionDurationSlow:n,lineWidthBold:r,colorPrimary:i}=e;return{[`${t}-wrapper-horizontal`]:{position:`relative`,"&::before":{position:`absolute`,left:{_skip_check_:!0,value:0},right:{_skip_check_:!0,value:0},bottom:0,borderBottom:`1px ${e.lineType} ${e.colorSplit}`,content:`" "`},[t]:{overflowX:`scroll`,position:`relative`,display:`flex`,scrollbarWidth:`none`,"&::-webkit-scrollbar":{display:`none`},[`${t}-link:first-of-type`]:{paddingInline:0},[`${t}-ink`]:{position:`absolute`,bottom:0,transition:`left ${n} ease-in-out, width ${n} ease-in-out`,height:r,backgroundColor:i}}}}},ha=Le(`Anchor`,e=>{let{fontSize:t,fontSizeLG:n,padding:r,paddingXXS:i}=e,a=Fe(e,{holderOffsetBlock:i,anchorPaddingBlock:i,anchorPaddingBlockSecondary:i/2,anchorPaddingInline:r,anchorTitleBlock:t/14*3,anchorBallSize:n/2});return[pa(a),ma(a)]}),ga=d({compatConfig:{MODE:3},name:`AAnchorLink`,inheritAttrs:!1,props:zn({prefixCls:String,href:String,title:bt(),target:String,customTitleProps:ut()},{href:`#`}),slots:Object,setup(e,t){let{slots:n,attrs:r}=t,i=null,{handleClick:a,scrollTo:o,unregisterLink:c,registerLink:l,activeLink:u}=fa(),{prefixCls:d}=K(`anchor`,e),f=t=>{let{href:n}=e;a(t,{title:i,href:n}),o(n)};return H(()=>e.href,(e,t)=>{x(()=>{c(t),l(e)})}),D(()=>{l(e.href)}),p(()=>{c(e.href)}),()=>{let{href:t,target:a,title:o=n.title,customTitleProps:c={}}=e,l=d.value;i=typeof o==`function`?o(c):o;let p=u.value===t,m=Z(`${l}-link`,{[`${l}-link-active`]:p},r.class),h=Z(`${l}-link-title`,{[`${l}-link-title-active`]:p});return s(`div`,X(X({},r),{},{class:m}),[s(`a`,{class:h,href:t,title:typeof i==`string`?i:``,target:a,onClick:f},[n.customTitle?n.customTitle(c):i]),n.default?.call(n)])}}});function _a(){return window}function va(e,t){if(!e.getClientRects().length)return 0;let n=e.getBoundingClientRect();return n.width||n.height?t===window?(t=e.ownerDocument.documentElement,n.top-t.clientTop):n.top-t.getBoundingClientRect().top:n.top}var ya=/#([\S ]+)$/,ba=d({compatConfig:{MODE:3},name:`AAnchor`,inheritAttrs:!1,props:{prefixCls:String,offsetTop:Number,bounds:Number,affix:{type:Boolean,default:!0},showInkInFixed:{type:Boolean,default:!1},getContainer:Function,wrapperClass:String,wrapperStyle:{type:Object,default:void 0},getCurrentAnchor:Function,targetOffset:Number,items:vt(),direction:J.oneOf([`vertical`,`horizontal`]).def(`vertical`),onChange:Function,onClick:Function},setup(e,t){let{emit:n,attrs:r,slots:i,expose:o}=t,{prefixCls:c,getTargetContainer:l,direction:u}=K(`anchor`,e),d=a(()=>e.direction??`vertical`),f=W(null),m=W(),h=k({links:[],scrollContainer:null,scrollEvent:null,animating:!1}),g=W(null),_=a(()=>{let{getContainer:t}=e;return t||l?.value||_a}),v=function(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:0,t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:5,n=[],r=_.value();return h.links.forEach(i=>{let a=ya.exec(i.toString());if(!a)return;let o=document.getElementById(a[1]);if(o){let a=va(o,r);at.top>e.top?t:e).link:``},y=t=>{let{getCurrentAnchor:r}=e;g.value!==t&&(g.value=typeof r==`function`?r(t):t,n(`change`,t))},b=t=>{let{offsetTop:n,targetOffset:r}=e;y(t);let i=ya.exec(t);if(!i)return;let a=document.getElementById(i[1]);if(!a)return;let o=_.value(),s=sa(o,!0)+va(a,o);s-=r===void 0?n||0:r,h.animating=!0,ca(s,{callback:()=>{h.animating=!1},getContainer:_.value})};o({scrollTo:b});let S=()=>{if(h.animating)return;let{offsetTop:t,bounds:n,targetOffset:r}=e,i=v(r===void 0?t||0:r,n);y(i)},C=()=>{let e=m.value.querySelector(`.${c.value}-link-title-active`);if(e&&f.value){let t=d.value===`horizontal`;f.value.style.top=t?``:`${e.offsetTop+e.clientHeight/2}px`,f.value.style.height=t?``:`${e.clientHeight}px`,f.value.style.left=t?`${e.offsetLeft}px`:``,f.value.style.width=t?`${e.clientWidth}px`:``,t&&ia(e,{scrollMode:`if-needed`,block:`nearest`})}};da({registerLink:e=>{h.links.includes(e)||h.links.push(e)},unregisterLink:e=>{let t=h.links.indexOf(e);t!==-1&&h.links.splice(t,1)},activeLink:g,scrollTo:b,handleClick:(e,t)=>{n(`click`,e,t)},direction:d}),D(()=>{x(()=>{let e=_.value();h.scrollContainer=e,h.scrollEvent=Ln(h.scrollContainer,`scroll`,S),S()})}),p(()=>{h.scrollEvent&&h.scrollEvent.remove()}),O(()=>{if(h.scrollEvent){let e=_.value();h.scrollContainer!==e&&(h.scrollContainer=e,h.scrollEvent.remove(),h.scrollEvent=Ln(h.scrollContainer,`scroll`,S),S())}C()});let w=e=>Array.isArray(e)?e.map(e=>{let{children:t,key:n,href:r,target:a,class:o,style:c,title:l}=e;return s(ga,{key:n,href:r,target:a,class:o,style:c,title:l,customTitleProps:e},{default:()=>[d.value===`vertical`?w(t):null],customTitle:i.customTitle})}):null,[T,E]=ha(c);return()=>{let{offsetTop:t,affix:n,showInkInFixed:a}=e,o=c.value,l=Z(`${o}-ink`,{[`${o}-ink-visible`]:g.value}),p=Z(E.value,e.wrapperClass,`${o}-wrapper`,{[`${o}-wrapper-horizontal`]:d.value===`horizontal`,[`${o}-rtl`]:u.value===`rtl`}),h=Z(o,{[`${o}-fixed`]:!n&&!a}),v=G({maxHeight:t?`calc(100vh - ${t}px)`:`100vh`},e.wrapperStyle),y=s(`div`,{class:p,style:v,ref:m},[s(`div`,{class:h},[s(`span`,{class:l,ref:f},null),Array.isArray(e.items)?w(e.items):i.default?.call(i)])]);return T(n?s(Yi,X(X({},r),{},{offsetTop:t,target:_.value}),{default:()=>[y]}):y)}}});ba.Link=ga,ba.install=function(e){return e.component(ba.name,ba),e.component(ba.Link.name,ba.Link),e};var xa=ba;function Sa(e,t){let{key:n}=e,r;return`value`in e&&({value:r}=e),n??(r===void 0?`rc-index-key-${t}`:r)}function Ca(e,t){let{label:n,value:r,options:i}=e||{};return{label:n||(t?`children`:`label`),value:r||`value`,options:i||`options`}}function wa(e){let{fieldNames:t,childrenAsData:n}=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},r=[],{label:i,value:a,options:o}=Ca(t,!1);function s(e,t){e.forEach(e=>{let c=e[i];if(t||!(o in e)){let n=e[a];r.push({key:Sa(e,r.length),groupOption:t,data:e,label:c,value:n})}else{let t=c;t===void 0&&n&&(t=e.label),r.push({key:Sa(e,r.length),group:!0,data:e,label:t}),s(e[o],!0)}})}return s(e,!1),r}function Ta(e){let t=G({},e);return`props`in t||Object.defineProperty(t,"props",{get(){return t}}),t}function Ea(e,t){if(!t||!t.length)return null;let n=!1;function r(e,t){let[i,...a]=t;if(!i)return[e];let o=e.split(i);return n||=o.length>1,o.reduce((e,t)=>[...e,...r(t,a)],[]).filter(e=>e)}let i=r(e,t);return n?i:null}function Da(){return``}function Oa(e){return e?e.ownerDocument:window.document}function ka(){}var Aa=()=>({action:J.oneOfType([J.string,J.arrayOf(J.string)]).def([]),showAction:J.any.def([]),hideAction:J.any.def([]),getPopupClassNameFromAlign:J.any.def(Da),onPopupVisibleChange:Function,afterPopupVisibleChange:J.func.def(ka),popup:J.any,arrow:J.bool.def(!0),popupStyle:{type:Object,default:void 0},prefixCls:J.string.def(`rc-trigger-popup`),popupClassName:J.string.def(``),popupPlacement:String,builtinPlacements:J.object,popupTransitionName:String,popupAnimation:J.any,mouseEnterDelay:J.number.def(0),mouseLeaveDelay:J.number.def(.1),zIndex:Number,focusDelay:J.number.def(0),blurDelay:J.number.def(.15),getPopupContainer:Function,getDocument:J.func.def(Oa),forceRender:{type:Boolean,default:void 0},destroyPopupOnHide:{type:Boolean,default:!1},mask:{type:Boolean,default:!1},maskClosable:{type:Boolean,default:!0},popupAlign:J.object.def(()=>({})),popupVisible:{type:Boolean,default:void 0},defaultPopupVisible:{type:Boolean,default:!1},maskTransitionName:String,maskAnimation:String,stretch:String,alignPoint:{type:Boolean,default:void 0},autoDestroy:{type:Boolean,default:!1},mobile:Object,getTriggerDOMNode:Function}),ja={visible:Boolean,prefixCls:String,zIndex:Number,destroyPopupOnHide:Boolean,forceRender:Boolean,arrow:{type:Boolean,default:!0},animation:[String,Object],transitionName:String,stretch:{type:String},align:{type:Object},point:{type:Object},getRootDomNode:{type:Function},getClassNameFromAlign:{type:Function},onAlign:{type:Function},onMouseenter:{type:Function},onMouseleave:{type:Function},onMousedown:{type:Function},onTouchstart:{type:Function}},Ma=G(G({},ja),{mobile:{type:Object}}),Na=G(G({},ja),{mask:Boolean,mobile:{type:Object},maskAnimation:String,maskTransitionName:String});function Pa(e){let{prefixCls:t,visible:n,zIndex:r,mask:i,maskAnimation:a,maskTransitionName:o}=e;if(!i)return null;let c={};return(o||a)&&(c=Xt({prefixCls:t,transitionName:o,animation:a})),s(Gt,X({appear:!0},c),{default:()=>[ie(s(`div`,{style:{zIndex:r},class:`${t}-mask`},null),[[te(`if`),n]])]})}Pa.displayName=`Mask`;var Fa=d({compatConfig:{MODE:3},name:`MobilePopupInner`,inheritAttrs:!1,props:Ma,emits:[`mouseenter`,`mouseleave`,`mousedown`,`touchstart`,`align`],setup(e,t){let{expose:n,slots:r}=t,i=W();return n({forceAlign:()=>{},getElement:()=>i.value}),()=>{let{zIndex:t,visible:n,prefixCls:a,mobile:{popupClassName:o,popupStyle:c,popupMotion:l={},popupRender:u}={}}=e,d=G({zIndex:t},c),f=pe(r.default?.call(r));f.length>1&&(f=s(`div`,{class:`${a}-content`},[f])),u&&(f=u(f));let p=Z(a,o);return s(Gt,X({ref:i},l),{default:()=>[n?s(`div`,{class:p,style:d},[f]):null]})}}}),Ia=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},La=[`measure`,`align`,null,`motion`],Ra=((e,t)=>{let n=M(null),r=M(),i=M(!1);function a(e){i.value||(n.value=e)}function o(){cr.cancel(r.value)}function s(e){o(),r.value=cr(()=>{let t=n.value;switch(n.value){case`align`:t=`motion`;break;case`motion`:t=`stable`}a(t),e?.()})}return H(e,()=>{a(`measure`)},{immediate:!0,flush:`post`}),D(()=>{H(n,()=>{n.value===`measure`&&t(),n.value&&(r.value=cr(()=>Ia(void 0,void 0,void 0,function*(){let e=La.indexOf(n.value),t=La[e+1];t&&e!==-1&&a(t)})))},{immediate:!0,flush:`post`})}),p(()=>{i.value=!0,o()}),[n,s]}),za=(e=>{let t=M({width:0,height:0});function n(e){t.value={width:e.offsetWidth,height:e.offsetHeight}}return[a(()=>{let n={};if(e.value){let{width:r,height:i}=t.value;e.value.indexOf(`height`)!==-1&&i?n.height=`${i}px`:e.value.indexOf(`minHeight`)!==-1&&i&&(n.minHeight=`${i}px`),e.value.indexOf(`width`)!==-1&&r?n.width=`${r}px`:e.value.indexOf(`minWidth`)!==-1&&r&&(n.minWidth=`${r}px`)}return n}),n]});function Ba(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function Va(e){for(var t=1;t=0&&n.left>=0&&n.bottom>n.top&&n.right>n.left?n:null}function qo(e,t,n,r){var i=Vo.clone(e),a={width:t.width,height:t.height};return r.adjustX&&i.left=n.left&&i.left+a.width>n.right&&(a.width-=i.left+a.width-n.right),r.adjustX&&i.left+a.width>n.right&&(i.left=Math.max(n.right-a.width,n.left)),r.adjustY&&i.top=n.top&&i.top+a.height>n.bottom&&(a.height-=i.top+a.height-n.bottom),r.adjustY&&i.top+a.height>n.bottom&&(i.top=Math.max(n.bottom-a.height,n.top)),Vo.mix(i,a)}function Jo(e){var t,n,r;if(!Vo.isWindow(e)&&e.nodeType!==9)t=Vo.offset(e),n=Vo.outerWidth(e),r=Vo.outerHeight(e);else{var i=Vo.getWindow(e);t={left:Vo.getWindowScrollLeft(i),top:Vo.getWindowScrollTop(i)},n=Vo.viewportWidth(i),r=Vo.viewportHeight(i)}return t.width=n,t.height=r,t}function Yo(e,t){var n=t.charAt(0),r=t.charAt(1),i=e.width,a=e.height,o=e.left,s=e.top;return n===`c`?s+=a/2:n===`b`&&(s+=a),r===`c`?o+=i/2:r===`r`&&(o+=i),{left:o,top:s}}function Xo(e,t,n,r,i){var a=Yo(t,n[1]),o=Yo(e,n[0]),s=[o.left-a.left,o.top-a.top];return{left:Math.round(e.left-s[0]+r[0]-i[0]),top:Math.round(e.top-s[1]+r[1]-i[1])}}function Zo(e,t,n){return e.leftn.right}function Qo(e,t,n){return e.topn.bottom}function $o(e,t,n){return e.left>n.right||e.left+t.widthn.bottom||e.top+t.height=n.right||r.top>=n.bottom}function ss(e,t,n){var r=n.target||t;return as(e,Jo(r),n,!os(r,n.overflow&&n.overflow.alwaysByViewport))}ss.__getOffsetParent=Uo,ss.__getVisibleRectForElement=Ko;function cs(e,t,n){var r,i,a=Vo.getDocument(e),o=a.defaultView||a.parentWindow,s=Vo.getWindowScrollLeft(o),c=Vo.getWindowScrollTop(o),l=Vo.viewportWidth(o),u=Vo.viewportHeight(o);r=`pageX`in t?t.pageX:s+t.clientX,i=`pageY`in t?t.pageY:c+t.clientY;var d={left:r,top:i,width:0,height:0},f=r>=0&&r<=s+l&&i>=0&&i<=c+u,p=[n.points[0],`cc`];return as(e,d,Va(Va({},n),{},{points:p}),f)}function ls(e,t){return e===t?!0:!e||!t?!1:`pageX`in t&&`pageY`in t?e.pageX===t.pageX&&e.pageY===t.pageY:`clientX`in t&&`clientY`in t&&e.clientX===t.clientX&&e.clientY===t.clientY}function us(e,t){e!==document.activeElement&&Ue(t,e)&&typeof e.focus==`function`&&e.focus()}function ds(e,t){let n=null,r=null;function i(e){let[{target:i}]=e;if(!document.documentElement.contains(i))return;let{width:a,height:o}=i.getBoundingClientRect(),s=Math.floor(a),c=Math.floor(o);(n!==s||r!==c)&&Promise.resolve().then(()=>{t({width:s,height:c})}),n=s,r=c}let a=new gi(i);return e&&a.observe(e),()=>{a.disconnect()}}var fs=((e,t)=>{let n=!1,r=null;function i(){clearTimeout(r)}function a(o){if(!n||o===!0){if(e()===!1)return;n=!0,i(),r=setTimeout(()=>{n=!1},t.value)}else i(),r=setTimeout(()=>{n=!1,a()},t.value)}return[a,()=>{n=!1,i()}]});function ps(){this.__data__=[],this.size=0}function ms(e,t){return e===t||e!==e&&t!==t}function hs(e,t){for(var n=e.length;n--;)if(ms(e[n][0],t))return n;return-1}var gs=Array.prototype.splice;function _s(e){var t=this.__data__,n=hs(t,e);return n<0?!1:(n==t.length-1?t.pop():gs.call(t,n,1),--this.size,!0)}function vs(e){var t=this.__data__,n=hs(t,e);return n<0?void 0:t[n][1]}function ys(e){return hs(this.__data__,e)>-1}function bs(e,t){var n=this.__data__,r=hs(n,e);return r<0?(++this.size,n.push([e,t])):n[r][1]=t,this}function xs(e){var t=-1,n=e==null?0:e.length;for(this.clear();++ts))return!1;var l=a.get(e),u=a.get(t);if(l&&u)return l==t&&u==e;var d=-1,f=!0,p=n&tc?new Zs:void 0;for(a.set(e,t),a.set(t,e);++d-1&&e%1==0&&e{let{disabled:t,target:n,align:r,onAlign:a}=e;if(!t&&n&&o.value){let e=o.value,t,s=Yc(n),c=Xc(n);i.value.element=s,i.value.point=c,i.value.align=r;let{activeElement:l}=document;return s&&jn(s)?t=ss(e,s,r):c&&(t=cs(e,c,r)),us(l,e),a&&t&&a(e,t),!0}return!1},a(()=>e.monitorBufferTime)),l=W({cancel:()=>{}}),u=W({cancel:()=>{}}),d=()=>{let t=e.target,n=Yc(t),r=Xc(t);o.value!==u.value.element&&(u.value.cancel(),u.value.element=o.value,u.value.cancel=ds(o.value,s)),(i.value.element!==n||!ls(i.value.point,r)||!qc(i.value.align,e.align))&&(s(),l.value.element!==n&&(l.value.cancel(),l.value.element=n,l.value.cancel=ds(n,s)))};D(()=>{x(()=>{d()})}),O(()=>{x(()=>{d()})}),H(()=>e.disabled,e=>{e?c():s()},{immediate:!0,flush:`post`});let f=W(null);return H(()=>e.monitorWindowResize,e=>{e?f.value||=Ln(window,`resize`,s):f.value&&=(f.value.remove(),null)},{flush:`post`}),E(()=>{l.value.cancel(),u.value.cancel(),f.value&&f.value.remove(),c()}),n({forceAlign:()=>s(!0)}),()=>{let e=r?.default();return e?Sn(e[0],{ref:o},!0,!0):null}}}),Qc=d({compatConfig:{MODE:3},name:`PopupInner`,inheritAttrs:!1,props:ja,emits:[`mouseenter`,`mouseleave`,`mousedown`,`touchstart`,`align`],setup(e,t){let{expose:n,attrs:r,slots:i}=t,o=M(),c=M(),l=M(),[u,d]=za(y(e,`stretch`)),f=()=>{e.stretch&&d(e.getRootDomNode())},p=M(!1),m;H(()=>e.visible,t=>{clearTimeout(m),t?m=setTimeout(()=>{p.value=e.visible}):p.value=!1},{immediate:!0});let[h,g]=Ra(p,f),_=M(),v=()=>e.point?e.point:e.getRootDomNode,b=()=>{var e;(e=o.value)==null||e.forceAlign()},x=(t,n)=>{var r;let i=e.getClassNameFromAlign(n),a=l.value;l.value!==i&&(l.value=i),h.value===`align`&&(a===i?g(()=>{var e;(e=_.value)==null||e.call(_)}):Promise.resolve().then(()=>{b()}),(r=e.onAlign)==null||r.call(e,t,n))},S=a(()=>{let t=typeof e.animation==`object`?e.animation:Xt(e);return[`onAfterEnter`,`onAfterLeave`].forEach(e=>{let n=t[e];t[e]=e=>{g(),h.value=`stable`,n?.(e)}}),t}),C=()=>new Promise(e=>{_.value=e});H([S,h],()=>{!S.value&&h.value===`motion`&&g()},{immediate:!0}),n({forceAlign:b,getElement:()=>c.value.$el||c.value});let w=a(()=>!(e.align?.points&&(h.value===`align`||h.value===`stable`)));return()=>{let{zIndex:t,align:n,prefixCls:a,destroyPopupOnHide:d,onMouseenter:f,onMouseleave:m,onTouchstart:g=()=>{},onMousedown:_}=e,y=h.value,b=[G(G({},u.value),{zIndex:t,opacity:y===`motion`||y===`stable`||!p.value?null:0,pointerEvents:!p.value&&y!==`stable`?`none`:null}),r.style],T=pe(i.default?.call(i,{visible:e.visible}));T.length>1&&(T=s(`div`,{class:`${a}-content`},[T]));let E=Z(a,r.class,l.value,!e.arrow&&`${a}-arrow-hidden`),D=p.value||!e.visible?ge(S.value.name,S.value):{};return s(Gt,X(X({ref:c},D),{},{onBeforeEnter:C}),{default:()=>!d||e.visible?ie(s(Zc,{target:v(),key:`popup`,ref:o,monitorWindowResize:!0,disabled:w.value,align:n,onAlign:x},{default:()=>s(`div`,{class:E,onMouseenter:f,onMouseleave:m,onMousedown:Ht(_,[`capture`]),[Jn?`onTouchstartPassive`:`onTouchstart`]:Ht(g,[`capture`]),style:b},[T])}),[[st,p.value]]):null})}}}),$c=d({compatConfig:{MODE:3},name:`Popup`,inheritAttrs:!1,props:Na,setup(e,t){let{attrs:n,slots:r,expose:i}=t,a=M(!1),o=M(!1),c=M(),l=M();return H([()=>e.visible,()=>e.mobile],()=>{a.value=e.visible,e.visible&&e.mobile&&(o.value=!0)},{immediate:!0,flush:`post`}),i({forceAlign:()=>{var e;(e=c.value)==null||e.forceAlign()},getElement:()=>c.value?.getElement()}),()=>{let t=G(G(G({},e),n),{visible:a.value}),i=o.value?s(Fa,X(X({},t),{},{mobile:e.mobile,ref:c}),{default:r.default}):s(Qc,X(X({},t),{},{ref:c}),{default:r.default});return s(`div`,{ref:l},[s(Pa,t,null),i])}}});function el(e,t,n){return n?e[0]===t[0]:e[0]===t[0]&&e[1]===t[1]}function tl(e,t,n){let r=e[t]||{};return G(G({},r),n)}function nl(e,t,n,r){let{points:i}=n,a=Object.keys(e);for(let n=0;n0&&arguments[0]!==void 0?arguments[0]:{},t=arguments.length>1?arguments[1]:void 0,n=typeof e==`function`?e(this.$data,this.$props):e;if(this.getDerivedStateFromProps){let e=this.getDerivedStateFromProps(He(this),G(G({},this.$data),n));if(e===null)return;n=G(G({},n),e||{})}G(this.$data,n),this._.isMounted&&this.$forceUpdate(),x(()=>{t&&t()})},__emit(){let e=[].slice.call(arguments,0),t=e[0];t=`on${t[0].toUpperCase()}${t.substring(1)}`;let n=this.$props[t]||this.$attrs[t];if(e.length&&n){if(Array.isArray(n))for(let t=0,r=n.length;t{let{popupPlacement:t,popupAlign:n,builtinPlacements:r}=e;return t&&r?tl(r,t,n):n}),n=M(null);return{vcTriggerContext:C(`vcTriggerContext`,{}),popupRef:n,setPopupRef:e=>{n.value=e},triggerRef:M(null),align:t,focusTime:null,clickOutsideHandler:null,contextmenuOutsideHandler1:null,contextmenuOutsideHandler2:null,touchOutsideHandler:null,attachId:null,delayTimer:null,hasPopupMouseDown:!1,preClickTime:null,preTouchTime:null,mouseDownTimeout:null,childOriginEvents:{}}},data(){let e=this.$props,t;return t=this.popupVisible===void 0?!!e.defaultPopupVisible:!!e.popupVisible,il.forEach(e=>{this[`fire${e}`]=t=>{this.fireEvents(e,t)}}),{prevPopupVisible:t,sPopupVisible:t,point:null}},watch:{popupVisible(e){e!==void 0&&(this.prevPopupVisible=this.sPopupVisible,this.sPopupVisible=e)}},created(){e(`vcTriggerContext`,{onPopupMouseDown:this.onPopupMouseDown,onPopupMouseenter:this.onPopupMouseenter,onPopupMouseleave:this.onPopupMouseleave}),en(this)},deactivated(){this.setPopupVisible(!1)},mounted(){this.$nextTick(()=>{this.updatedCal()})},updated(){this.$nextTick(()=>{this.updatedCal()})},beforeUnmount(){this.clearDelayTimer(),this.clearOutsideHandler(),clearTimeout(this.mouseDownTimeout),cr.cancel(this.attachId)},methods:{updatedCal(){let e=this.$props;if(this.$data.sPopupVisible){let t;!this.clickOutsideHandler&&(this.isClickToHide()||this.isContextmenuToShow())&&(t=e.getDocument(this.getRootDomNode()),this.clickOutsideHandler=Ln(t,`mousedown`,this.onDocumentClick)),this.touchOutsideHandler||=(t||=e.getDocument(this.getRootDomNode()),Ln(t,`touchstart`,this.onDocumentClick,Jn?{passive:!1}:!1)),!this.contextmenuOutsideHandler1&&this.isContextmenuToShow()&&(t||=e.getDocument(this.getRootDomNode()),this.contextmenuOutsideHandler1=Ln(t,`scroll`,this.onContextmenuClose)),!this.contextmenuOutsideHandler2&&this.isContextmenuToShow()&&(this.contextmenuOutsideHandler2=Ln(window,`blur`,this.onContextmenuClose))}else this.clearOutsideHandler()},onMouseenter(e){let{mouseEnterDelay:t}=this.$props;this.fireEvents(`onMouseenter`,e),this.delaySetPopupVisible(!0,t,t?null:e)},onMouseMove(e){this.fireEvents(`onMousemove`,e),this.setPoint(e)},onMouseleave(e){this.fireEvents(`onMouseleave`,e),this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay)},onPopupMouseenter(){let{vcTriggerContext:e={}}=this;e.onPopupMouseenter&&e.onPopupMouseenter(),this.clearDelayTimer()},onPopupMouseleave(e){if(e&&e.relatedTarget&&!e.relatedTarget.setTimeout&&Ue(this.popupRef?.getElement(),e.relatedTarget))return;this.isMouseLeaveToHide()&&this.delaySetPopupVisible(!1,this.$props.mouseLeaveDelay);let{vcTriggerContext:t={}}=this;t.onPopupMouseleave&&t.onPopupMouseleave(e)},onFocus(e){this.fireEvents(`onFocus`,e),this.clearDelayTimer(),this.isFocusToShow()&&(this.focusTime=Date.now(),this.delaySetPopupVisible(!0,this.$props.focusDelay))},onMousedown(e){this.fireEvents(`onMousedown`,e),this.preClickTime=Date.now()},onTouchstart(e){this.fireEvents(`onTouchstart`,e),this.preTouchTime=Date.now()},onBlur(e){Ue(e.target,e.relatedTarget||document.activeElement)||(this.fireEvents(`onBlur`,e),this.clearDelayTimer(),this.isBlurToHide()&&this.delaySetPopupVisible(!1,this.$props.blurDelay))},onContextmenu(e){e.preventDefault(),this.fireEvents(`onContextmenu`,e),this.setPopupVisible(!0,e)},onContextmenuClose(){this.isContextmenuToShow()&&this.close()},onClick(e){if(this.fireEvents(`onClick`,e),this.focusTime){let e;if(this.preClickTime&&this.preTouchTime?e=Math.min(this.preClickTime,this.preTouchTime):this.preClickTime?e=this.preClickTime:this.preTouchTime&&(e=this.preTouchTime),Math.abs(e-this.focusTime)<20)return;this.focusTime=0}this.preClickTime=0,this.preTouchTime=0,this.isClickToShow()&&(this.isClickToHide()||this.isBlurToHide())&&e&&e.preventDefault&&e.preventDefault(),e&&e.domEvent&&e.domEvent.preventDefault();let t=!this.$data.sPopupVisible;(this.isClickToHide()&&!t||t&&this.isClickToShow())&&this.setPopupVisible(!this.$data.sPopupVisible,e)},onPopupMouseDown(){let{vcTriggerContext:e={}}=this;this.hasPopupMouseDown=!0,clearTimeout(this.mouseDownTimeout),this.mouseDownTimeout=setTimeout(()=>{this.hasPopupMouseDown=!1},0),e.onPopupMouseDown&&e.onPopupMouseDown(...arguments)},onDocumentClick(e){if(this.$props.mask&&!this.$props.maskClosable)return;let t=e.target,n=this.getRootDomNode(),r=this.getPopupDomNode();(!Ue(n,t)||this.isContextMenuOnly())&&!Ue(r,t)&&!this.hasPopupMouseDown&&this.delaySetPopupVisible(!1,.1)},getPopupDomNode(){return this.popupRef?.getElement()||null},getRootDomNode(){let{getTriggerDOMNode:e}=this.$props;if(e){let t=this.triggerRef?.$el?.nodeName===`#comment`?null:Et(this.triggerRef);return Et(e(t))}try{let e=this.triggerRef?.$el?.nodeName===`#comment`?null:Et(this.triggerRef);if(e)return e}catch{}return Et(this)},handleGetPopupClassFromAlign(e){let t=[],{popupPlacement:n,builtinPlacements:r,prefixCls:i,alignPoint:a,getPopupClassNameFromAlign:o}=this.$props;return n&&r&&t.push(nl(r,i,e,a)),o&&t.push(o(e)),t.join(` `)},getPopupAlign(){let{popupPlacement:e,popupAlign:t,builtinPlacements:n}=this.$props;return e&&n?tl(n,e,t):t},getComponent(){let e={};this.isMouseEnterToShow()&&(e.onMouseenter=this.onPopupMouseenter),this.isMouseLeaveToHide()&&(e.onMouseleave=this.onPopupMouseleave),e.onMousedown=this.onPopupMouseDown,e[Jn?`onTouchstartPassive`:`onTouchstart`]=this.onPopupMouseDown;let{handleGetPopupClassFromAlign:t,getRootDomNode:n,$attrs:r}=this,{prefixCls:i,destroyPopupOnHide:a,popupClassName:o,popupAnimation:c,popupTransitionName:l,popupStyle:u,mask:d,maskAnimation:f,maskTransitionName:p,zIndex:m,stretch:h,alignPoint:g,mobile:_,arrow:v,forceRender:y}=this.$props,{sPopupVisible:b,point:x}=this.$data,S=G(G({prefixCls:i,arrow:v,destroyPopupOnHide:a,visible:b,point:g?x:null,align:this.align,animation:c,getClassNameFromAlign:t,stretch:h,getRootDomNode:n,mask:d,zIndex:m,transitionName:l,maskAnimation:f,maskTransitionName:p,class:o,style:u,onAlign:r.onPopupAlign||ka},e),{ref:this.setPopupRef,mobile:_,forceRender:y});return s($c,S,{default:this.$slots.popup||(()=>Ie(this,`popup`))})},attachParent(e){cr.cancel(this.attachId);let{getPopupContainer:t,getDocument:n}=this.$props,r=this.getRootDomNode(),i;t?(r||t.length===0)&&(i=t(r)):i=n(this.getRootDomNode()).body,i?i.appendChild(e):this.attachId=cr(()=>{this.attachParent(e)})},getContainer(){let{$props:e}=this,{getDocument:t}=e,n=t(this.getRootDomNode()).createElement(`div`);return n.style.position=`absolute`,n.style.top=`0`,n.style.left=`0`,n.style.width=`100%`,this.attachParent(n),n},setPopupVisible(e,t){let{alignPoint:n,sPopupVisible:r,onPopupVisibleChange:i}=this;this.clearDelayTimer(),r!==e&&(Ke(this,`popupVisible`)||this.setState({sPopupVisible:e,prevPopupVisible:r}),i&&i(e)),n&&t&&e&&this.setPoint(t)},setPoint(e){let{alignPoint:t}=this.$props;!t||!e||this.setState({point:{pageX:e.pageX,pageY:e.pageY}})},handlePortalUpdate(){this.prevPopupVisible!==this.sPopupVisible&&this.afterPopupVisibleChange(this.sPopupVisible)},delaySetPopupVisible(e,t,n){let r=t*1e3;if(this.clearDelayTimer(),r){let t=n?{pageX:n.pageX,pageY:n.pageY}:null;this.delayTimer=setTimeout(()=>{this.setPopupVisible(e,t),this.clearDelayTimer()},r)}else this.setPopupVisible(e,n)},clearDelayTimer(){this.delayTimer&&=(clearTimeout(this.delayTimer),null)},clearOutsideHandler(){this.clickOutsideHandler&&=(this.clickOutsideHandler.remove(),null),this.contextmenuOutsideHandler1&&=(this.contextmenuOutsideHandler1.remove(),null),this.contextmenuOutsideHandler2&&=(this.contextmenuOutsideHandler2.remove(),null),this.touchOutsideHandler&&=(this.touchOutsideHandler.remove(),null)},createTwoChains(e){let t=()=>{},n=Re(this);return this.childOriginEvents[e]&&n[e]?this[`fire${e}`]:(t=this.childOriginEvents[e]||n[e]||t,t)},isClickToShow(){let{action:e,showAction:t}=this.$props;return e.indexOf(`click`)!==-1||t.indexOf(`click`)!==-1},isContextMenuOnly(){let{action:e}=this.$props;return e===`contextmenu`||e.length===1&&e[0]===`contextmenu`},isContextmenuToShow(){let{action:e,showAction:t}=this.$props;return e.indexOf(`contextmenu`)!==-1||t.indexOf(`contextmenu`)!==-1},isClickToHide(){let{action:e,hideAction:t}=this.$props;return e.indexOf(`click`)!==-1||t.indexOf(`click`)!==-1},isMouseEnterToShow(){let{action:e,showAction:t}=this.$props;return e.indexOf(`hover`)!==-1||t.indexOf(`mouseenter`)!==-1},isMouseLeaveToHide(){let{action:e,hideAction:t}=this.$props;return e.indexOf(`hover`)!==-1||t.indexOf(`mouseleave`)!==-1},isFocusToShow(){let{action:e,showAction:t}=this.$props;return e.indexOf(`focus`)!==-1||t.indexOf(`focus`)!==-1},isBlurToHide(){let{action:e,hideAction:t}=this.$props;return e.indexOf(`focus`)!==-1||t.indexOf(`blur`)!==-1},forcePopupAlign(){var e;this.$data.sPopupVisible&&((e=this.popupRef)==null||e.forceAlign())},fireEvents(e,t){this.childOriginEvents[e]&&this.childOriginEvents[e](t);let n=this.$props[e]||this.$attrs[e];n&&n(t)},close(){this.setPopupVisible(!1)}},render(){let{$attrs:e}=this,t=ve(Oe(this)),{alignPoint:n,getPopupContainer:r}=this.$props,i=t[0];this.childOriginEvents=Re(i);let a={key:`trigger`};a.onContextmenu=this.isContextmenuToShow()?this.onContextmenu:this.createTwoChains(`onContextmenu`),this.isClickToHide()||this.isClickToShow()?(a.onClick=this.onClick,a.onMousedown=this.onMousedown,a[Jn?`onTouchstartPassive`:`onTouchstart`]=this.onTouchstart):(a.onClick=this.createTwoChains(`onClick`),a.onMousedown=this.createTwoChains(`onMousedown`),a[Jn?`onTouchstartPassive`:`onTouchstart`]=this.createTwoChains(`onTouchstart`)),this.isMouseEnterToShow()?(a.onMouseenter=this.onMouseenter,n&&(a.onMousemove=this.onMouseMove)):a.onMouseenter=this.createTwoChains(`onMouseenter`),a.onMouseleave=this.isMouseLeaveToHide()?this.onMouseleave:this.createTwoChains(`onMouseleave`),this.isFocusToShow()||this.isBlurToHide()?(a.onFocus=this.onFocus,a.onBlur=this.onBlur):(a.onFocus=this.createTwoChains(`onFocus`),a.onBlur=e=>{e&&(!e.relatedTarget||!Ue(e.target,e.relatedTarget))&&this.createTwoChains(`onBlur`)(e)});let o=Z(i&&i.props&&i.props.class,e.class);o&&(a.class=o);let c=Sn(i,G(G({},a),{ref:`triggerRef`}),!0,!0),l=s(bn,{key:`portal`,getContainer:r&&(()=>r(this.getRootDomNode())),didUpdate:this.handlePortalUpdate,visible:this.$data.sPopupVisible},{default:this.getComponent});return s(v,null,[c,l])}}),ol=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let t=e===!0?0:1;return{bottomLeft:{points:[`tl`,`bl`],offset:[0,4],overflow:{adjustX:t,adjustY:1}},bottomRight:{points:[`tr`,`br`],offset:[0,4],overflow:{adjustX:t,adjustY:1}},topLeft:{points:[`bl`,`tl`],offset:[0,-4],overflow:{adjustX:t,adjustY:1}},topRight:{points:[`br`,`tr`],offset:[0,-4],overflow:{adjustX:t,adjustY:1}}}},cl=d({name:`SelectTrigger`,inheritAttrs:!1,props:{dropdownAlign:Object,visible:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},dropdownClassName:String,dropdownStyle:J.object,placement:String,empty:{type:Boolean,default:void 0},prefixCls:String,popupClassName:String,animation:String,transitionName:String,getPopupContainer:Function,dropdownRender:Function,containerWidth:Number,dropdownMatchSelectWidth:J.oneOfType([Number,Boolean]).def(!0),popupElement:J.any,direction:String,getTriggerDOMNode:Function,onPopupVisibleChange:Function,onPopupMouseEnter:Function,onPopupFocusin:Function,onPopupFocusout:Function},setup(e,t){let{slots:n,attrs:r,expose:i}=t,o=a(()=>{let{dropdownMatchSelectWidth:t}=e;return sl(t)}),c=W();return i({getPopupElement:()=>c.value}),()=>{let t=G(G({},e),r),{empty:i=!1}=t,{visible:a,dropdownAlign:l,prefixCls:u,popupElement:d,dropdownClassName:f,dropdownStyle:p,direction:m=`ltr`,placement:h,dropdownMatchSelectWidth:g,containerWidth:_,dropdownRender:v,animation:y,transitionName:b,getPopupContainer:x,getTriggerDOMNode:S,onPopupVisibleChange:C,onPopupMouseEnter:w,onPopupFocusin:T,onPopupFocusout:E}=ol(t,[`empty`]),D=`${u}-dropdown`,O=d;v&&(O=v({menuNode:d,props:e}));let k=y?`${D}-${y}`:b,A=G({minWidth:`${_}px`},p);return typeof g==`number`?A.width=`${g}px`:g&&(A.width=`${_}px`),s(al,X(X({},e),{},{showAction:C?[`click`]:[],hideAction:C?[`click`]:[],popupPlacement:h||(m===`rtl`?`bottomRight`:`bottomLeft`),builtinPlacements:o.value,prefixCls:D,popupTransitionName:k,popupAlign:l,popupVisible:a,getPopupContainer:x,popupClassName:Z(f,{[`${D}-empty`]:i}),popupStyle:A,getTriggerDOMNode:S,onPopupVisibleChange:C}),{default:n.default,popup:()=>s(`div`,{ref:c,onMouseenter:w,onFocusin:T,onFocusout:E},[O])})}}}),ll=(e,t)=>{let{slots:n}=t,{class:r,customizeIcon:i,customizeIconProps:a,onMousedown:c,onClick:u}=e,d;return d=typeof i==`function`?i(a):l(i)?o(i):i,s(`span`,{class:r,onMousedown:e=>{e.preventDefault(),c&&c(e)},style:{userSelect:`none`,WebkitUserSelect:`none`},unselectable:`on`,onClick:u,"aria-hidden":!0},[d===void 0?s(`span`,{class:r.split(/\s+/).map(e=>`${e}-icon`)},[n.default?.call(n)]):d])};ll.inheritAttrs=!1,ll.displayName=`TransBtn`,ll.props={class:String,customizeIcon:J.any,customizeIconProps:J.any,onMousedown:Function,onClick:Function};var ul=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{r.value&&r.value.focus()},blur:()=>{r.value&&r.value.blur()},input:r,setSelectionRange:(e,t,n)=>{var i;(i=r.value)==null||i.setSelectionRange(e,t,n)},select:()=>{var e;(e=r.value)==null||e.select()},getSelectionStart:()=>r.value?.selectionStart,getSelectionEnd:()=>r.value?.selectionEnd,getScrollTop:()=>r.value?.scrollTop}),()=>{let{tag:t,value:n}=e,i=ul(e,[`tag`,`value`]);return s(t,X(X({},i),{},{ref:r,value:n}),null)}}});function fl(){return{width:document.documentElement.clientWidth,height:window.innerHeight||document.documentElement.clientHeight}}function pl(e){let t=e.getBoundingClientRect(),n=document.documentElement;return{left:t.left+(window.scrollX||n.scrollLeft)-(n.clientLeft||document.body.clientLeft||0),top:t.top+(window.scrollY||n.scrollTop)-(n.clientTop||document.body.clientTop||0)}}function ml(e){return Array.prototype.slice.apply(e).map(t=>`${t}: ${e.getPropertyValue(t)};`).join(``)}function hl(e){return Object.keys(e).reduce((t,n)=>(e[n]==null||(t+=`${n}: ${e[n]};`),t),``)}var gl=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);ie.value,l],()=>{l.value||(c.value=e.value)},{immediate:!0});let u=e=>{n(`change`,e)},d=e=>{l.value=!0,e.target.composing=!0,n(`compositionstart`,e)},f=e=>{l.value=!1,e.target.composing=!1,n(`compositionend`,e);let t=document.createEvent(`HTMLEvents`);t.initEvent(`input`,!0,!0),e.target.dispatchEvent(t),u(e)},p=t=>{if(l.value&&e.lazy){c.value=t.target.value;return}n(`input`,t)},m=e=>{n(`blur`,e)},h=e=>{n(`focus`,e)},g=()=>{o.value&&o.value.focus()},_=()=>{o.value&&o.value.blur()},v=e=>{n(`keydown`,e)},y=e=>{n(`keyup`,e)};i({focus:g,blur:_,input:a(()=>o.value?.input),setSelectionRange:(e,t,n)=>{var r;(r=o.value)==null||r.setSelectionRange(e,t,n)},select:()=>{var e;(e=o.value)==null||e.select()},getSelectionStart:()=>o.value?.getSelectionStart(),getSelectionEnd:()=>o.value?.getSelectionEnd(),getScrollTop:()=>o.value?.getScrollTop()});let b=e=>{n(`mousedown`,e)},x=e=>{n(`paste`,e)},S=a(()=>e.style&&typeof e.style!=`string`?hl(e.style):e.style);return()=>{let{style:t,lazy:n}=e,i=gl(e,[`style`,`lazy`]);return s(dl,X(X(X({},i),r),{},{style:S.value,onInput:p,onChange:u,onBlur:m,onFocus:h,ref:o,value:c.value,onCompositionstart:d,onCompositionend:f,onKeyup:y,onKeydown:v,onPaste:x,onMousedown:b}),null)}}}),vl={inputRef:J.any,prefixCls:String,id:String,inputElement:J.VueNode,disabled:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,editable:{type:Boolean,default:void 0},activeDescendantId:String,value:String,open:{type:Boolean,default:void 0},tabindex:J.oneOfType([J.number,J.string]),attrs:J.object,onKeydown:{type:Function},onMousedown:{type:Function},onChange:{type:Function},onPaste:{type:Function},onCompositionstart:{type:Function},onCompositionend:{type:Function},onFocus:{type:Function},onBlur:{type:Function}},yl=d({compatConfig:{MODE:3},name:`SelectInput`,inheritAttrs:!1,props:vl,setup(e){let t=null,n=C(`VCSelectContainerEvent`);return()=>{let{prefixCls:r,id:i,inputElement:a,disabled:o,tabindex:c,autofocus:l,autocomplete:u,editable:d,activeDescendantId:f,value:p,onKeydown:m,onMousedown:h,onChange:g,onPaste:_,onCompositionstart:v,onCompositionend:y,onFocus:b,onBlur:x,open:S,inputRef:C,attrs:w}=e,T=a||s(_l,null,null),E=T.props||{},{onKeydown:D,onInput:O,onFocus:k,onBlur:A,onMousedown:j,onCompositionstart:M,onCompositionend:N,style:P}=E;return T=Sn(T,G(G(G(G(G({type:`search`},E),{id:i,ref:C,disabled:o,tabindex:c,lazy:!1,autocomplete:u||`off`,autofocus:l,class:Z(`${r}-selection-search-input`,T?.props?.class),role:`combobox`,"aria-expanded":S,"aria-haspopup":`listbox`,"aria-owns":`${i}_list`,"aria-autocomplete":`list`,"aria-controls":`${i}_list`,"aria-activedescendant":f}),w),{value:d?p:``,readonly:!d,unselectable:d?null:`on`,style:G(G({},P),{opacity:d?null:0}),onKeydown:e=>{m(e),D&&D(e)},onMousedown:e=>{h(e),j&&j(e)},onInput:e=>{g(e),O&&O(e)},onCompositionstart(e){v(e),M&&M(e)},onCompositionend(e){y(e),N&&N(e)},onPaste:_,onFocus:function(){clearTimeout(t),k&&k(arguments.length<=0?void 0:arguments[0]),b&&b(arguments.length<=0?void 0:arguments[0]),n?.focus(arguments.length<=0?void 0:arguments[0])},onBlur:function(){var e=[...arguments];t=setTimeout(()=>{A&&A(e[0]),x&&x(e[0]),n?.blur(e[0])},100)}}),T.type===`textarea`?{}:{type:`search`}),!0,!0),T}}}),bl=Symbol(`OverflowContextProviderKey`),xl=d({compatConfig:{MODE:3},name:`OverflowContextProvider`,inheritAttrs:!1,props:{value:{type:Object}},setup(t,n){let{slots:r}=n;return e(bl,a(()=>t.value)),()=>r.default?.call(r)}}),Sl=()=>C(bl,a(()=>null)),Cl=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);ie.responsive&&!e.display),o=W();r({itemNodeRef:o});function c(t){e.registerSize(e.itemKey,t)}return E(()=>{c(null)}),()=>{let{prefixCls:t,invalidate:r,item:a,renderItem:l,responsive:u,registerSize:d,itemKey:f,display:p,order:m,component:h=`div`}=e,g=Cl(e,[`prefixCls`,`invalidate`,`item`,`renderItem`,`responsive`,`registerSize`,`itemKey`,`display`,`order`,`component`]),_=n.default?.call(n),v=l&&a!==wl?l(a):_,y;r||(y={opacity:+!i.value,height:i.value?0:wl,overflowY:i.value?`hidden`:wl,order:u?m:wl,pointerEvents:i.value?`none`:wl,position:i.value?`absolute`:wl});let b={};return i.value&&(b[`aria-hidden`]=!0),s(_i,{disabled:!u,onResize:e=>{let{offsetWidth:t}=e;c(t)}},{default:()=>s(h,X(X(X({class:Z(!r&&t),style:y},b),g),{},{ref:o}),{default:()=>[v]})})}}}),El=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{if(!i.value){let{component:t=`div`}=e,i=El(e,[`component`]);return s(t,X(X({},i),r),{default:()=>[n.default?.call(n)]})}let t=i.value,{className:a}=t,o=El(t,[`className`]),{class:c}=r,l=El(r,[`class`]);return s(xl,{value:null},{default:()=>[s(Tl,X(X(X({class:Z(a,c)},o),l),e),n)]})}}}),Ol=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);ie.ssr===`full`),c=M(null),l=a(()=>c.value||0),u=M(new Map),d=M(0),f=M(0),p=M(0),m=M(null),h=M(null),g=a(()=>h.value===null&&o.value?2**53-1:h.value||0),_=M(!1),v=a(()=>`${e.prefixCls}-item`),y=a(()=>Math.max(d.value,f.value)),b=a(()=>!!(e.data.length&&e.maxCount===kl)),x=a(()=>e.maxCount===Al),S=a(()=>b.value||typeof e.maxCount==`number`&&e.data.length>e.maxCount),C=a(()=>{let t=e.data;return b.value?t=c.value===null&&o.value?e.data:e.data.slice(0,Math.min(e.data.length,l.value/e.itemWidth)):typeof e.maxCount==`number`&&(t=e.data.slice(0,e.maxCount)),t}),w=a(()=>b.value?e.data.slice(g.value+1):e.data.slice(C.value.length)),T=(t,n)=>typeof e.itemKey==`function`?e.itemKey(t):(e.itemKey&&t?.[e.itemKey])??n,E=a(()=>e.renderItem||(e=>e)),D=(t,n)=>{h.value=t,n||(_.value=t{c.value=t.clientWidth},k=(e,t)=>{let n=new Map(u.value);t===null?n.delete(e):n.set(e,t),u.value=n},A=(e,t)=>{d.value=f.value,f.value=t},j=(e,t)=>{p.value=t},N=e=>u.value.get(T(C.value[e],e));return H([l,u,f,p,()=>e.itemKey,C],()=>{if(l.value&&y.value&&C.value){let t=p.value,n=C.value.length,r=n-1;if(!n){D(0),m.value=null;return}for(let e=0;el.value){D(e-1),m.value=t-n-p.value+f.value;break}}e.suffix&&N(0)+p.value>l.value&&(m.value=null)}}),()=>{let t=_.value&&!!w.value.length,{itemComponent:r,renderRawItem:a,renderRawRest:o,renderRest:c,prefixCls:l=`rc-overflow`,suffix:u,component:d=`div`,id:f,onMousedown:p}=e,{class:h,style:y}=n,D=Ol(n,[`class`,`style`]),M={};m.value!==null&&b.value&&(M={position:`absolute`,left:`${m.value}px`,top:0});let N={prefixCls:v.value,responsive:b.value,component:r,invalidate:x.value},P=a?(e,t)=>{let n=T(e,t);return s(xl,{key:n,value:G(G({},N),{order:t,item:e,itemKey:n,registerSize:k,display:t<=g.value})},{default:()=>[a(e,t)]})}:(e,t)=>{let n=T(e,t);return s(Tl,X(X({},N),{},{order:t,key:n,item:e,renderItem:E.value,itemKey:n,registerSize:k,display:t<=g.value}),null)},F=()=>null,I={order:t?g.value:2**53-1,className:`${v.value} ${v.value}-rest`,registerSize:A,display:t};if(o)o&&(F=()=>s(xl,{value:G(G({},N),I)},{default:()=>[o(w.value)]}));else{let e=c||jl;F=()=>s(Tl,X(X({},N),I),{default:()=>typeof e==`function`?e(w.value):e})}return s(_i,{disabled:!b.value,onResize:O},{default:()=>s(d,X({id:f,class:Z(!x.value&&l,h),style:y,onMousedown:p,role:e.role},D),{default:()=>[C.value.map(P),S.value?F():null,u&&s(Tl,X(X({},N),{},{order:g.value,class:`${v.value}-suffix`,registerSize:j,display:!0,style:M}),{default:()=>u}),i.default?.call(i)]})})}}});Ml.Item=Dl,Ml.RESPONSIVE=kl,Ml.INVALIDATE=Al;var Nl=Ml,Pl=Symbol(`TreeSelectLegacyContextPropsKey`);function Fl(t){return e(Pl,t)}function Il(){return C(Pl,{})}var Ll={id:String,prefixCls:String,values:J.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:J.any,placeholder:J.any,disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:J.oneOfType([J.number,J.string]),compositionStatus:Boolean,removeIcon:J.any,choiceTransitionName:String,maxTagCount:J.oneOfType([J.number,J.string]),maxTagTextLength:Number,maxTagPlaceholder:J.any.def(()=>e=>`+ ${e.length} ...`),tagRender:Function,onToggleOpen:{type:Function},onRemove:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},Rl=e=>{e.preventDefault(),e.stopPropagation()},zl=d({name:`MultipleSelectSelector`,inheritAttrs:!1,props:Ll,setup(e){let t=M(),n=M(0),r=M(!1),i=Il(),o=a(()=>`${e.prefixCls}-selection`),c=a(()=>e.open||e.mode===`tags`?e.searchValue:``),l=a(()=>e.mode===`tags`||e.showSearch&&(e.open||r.value)),u=W(``);P(()=>{u.value=c.value}),D(()=>{H(u,()=>{n.value=t.value.scrollWidth},{flush:`post`,immediate:!0})});function d(t,n,r,i,a){return s(`span`,{class:Z(`${o.value}-item`,{[`${o.value}-item-disabled`]:r}),title:typeof t==`string`||typeof t==`number`?t.toString():void 0},[s(`span`,{class:`${o.value}-item-content`},[n]),i&&s(ll,{class:`${o.value}-item-remove`,onMousedown:Rl,onClick:a,customizeIcon:e.removeIcon},{default:()=>[g(`×`)]})])}function f(t,n,r,a,o,c){let l=t=>{Rl(t),e.onToggleOpen(!open)},u=c;return i.keyEntities&&(u=i.keyEntities[t]?.node||{}),s(`span`,{key:t,onMousedown:l},[e.tagRender({label:n,value:t,disabled:r,closable:a,onClose:o,option:u})])}function p(t){let{disabled:n,label:r,value:i,option:a}=t,o=!e.disabled&&!n,s=r;if(typeof e.maxTagTextLength==`number`&&(typeof r==`string`||typeof r==`number`)){let t=String(s);t.length>e.maxTagTextLength&&(s=`${t.slice(0,e.maxTagTextLength)}...`)}let c=n=>{var r;n&&n.stopPropagation(),(r=e.onRemove)==null||r.call(e,t)};return typeof e.tagRender==`function`?f(i,s,n,o,c,a):d(r,s,n,o,c)}function m(t){let{maxTagPlaceholder:n=e=>`+ ${e.length} ...`}=e,r=typeof n==`function`?n(t):n;return d(r,r,!1)}let h=t=>{let n=t.target.composing;u.value=t.target.value,n||e.onInputChange(t)};return()=>{let{id:i,prefixCls:a,values:d,open:f,inputRef:_,placeholder:y,disabled:b,autofocus:x,autocomplete:S,activeDescendantId:C,tabindex:w,compositionStatus:T,onInputPaste:E,onInputKeyDown:D,onInputMouseDown:O,onInputCompositionStart:k,onInputCompositionEnd:A}=e,j=s(`div`,{class:`${o.value}-search`,style:{width:n.value+`px`},key:`input`},[s(yl,{inputRef:_,open:f,prefixCls:a,id:i,inputElement:null,disabled:b,autofocus:x,autocomplete:S,editable:l.value,activeDescendantId:C,value:u.value,onKeydown:D,onMousedown:O,onChange:h,onPaste:E,onCompositionstart:k,onCompositionend:A,tabindex:w,attrs:un(e,!0),onFocus:()=>r.value=!0,onBlur:()=>r.value=!1},null),s(`span`,{ref:t,class:`${o.value}-search-mirror`,"aria-hidden":!0},[u.value,g(`\xA0`)])]),M=s(Nl,{prefixCls:`${o.value}-overflow`,data:d,renderItem:p,renderRest:m,suffix:j,itemKey:`key`,maxCount:e.maxTagCount,key:`overflow`},null);return s(v,null,[M,!d.length&&!c.value&&!T&&s(`span`,{class:`${o.value}-placeholder`},[y])])}}}),Bl={inputElement:J.any,id:String,prefixCls:String,values:J.array,open:{type:Boolean,default:void 0},searchValue:String,inputRef:J.any,placeholder:J.any,compositionStatus:{type:Boolean,default:void 0},disabled:{type:Boolean,default:void 0},mode:String,showSearch:{type:Boolean,default:void 0},autofocus:{type:Boolean,default:void 0},autocomplete:String,activeDescendantId:String,tabindex:J.oneOfType([J.number,J.string]),activeValue:String,backfill:{type:Boolean,default:void 0},optionLabelRender:Function,onInputChange:Function,onInputPaste:Function,onInputKeyDown:Function,onInputMouseDown:Function,onInputCompositionStart:Function,onInputCompositionEnd:Function},Vl=d({name:`SingleSelector`,setup(e){let t=M(!1),n=a(()=>e.mode===`combobox`),r=a(()=>n.value||e.showSearch),i=a(()=>{let r=e.searchValue||``;return n.value&&e.activeValue&&!t.value&&(r=e.activeValue),r}),o=Il();H([n,()=>e.activeValue],()=>{n.value&&(t.value=!1)},{immediate:!0});let c=a(()=>e.mode!==`combobox`&&!e.open&&!e.showSearch?!1:!!i.value||e.compositionStatus),l=a(()=>{let t=e.values[0];return t&&(typeof t.label==`string`||typeof t.label==`number`)?t.label.toString():void 0}),u=()=>{if(e.values[0])return null;let t=c.value?{visibility:`hidden`}:void 0;return s(`span`,{class:`${e.prefixCls}-selection-placeholder`,style:t},[e.placeholder])},d=n=>{n.target.composing||(t.value=!0,e.onInputChange(n))};return()=>{let{inputElement:t,prefixCls:a,id:f,values:p,inputRef:m,disabled:h,autofocus:g,autocomplete:_,activeDescendantId:y,open:b,tabindex:x,optionLabelRender:S,onInputKeyDown:C,onInputMouseDown:w,onInputPaste:T,onInputCompositionStart:E,onInputCompositionEnd:D}=e,O=p[0],k=null;if(O&&o.customSlots){let e=O.key??O.value,t=o.keyEntities[e]?.node||{};k=o.customSlots[t.slots?.title]||o.customSlots.title||O.label,typeof k==`function`&&(k=k(t))}else k=S&&O?S(O.option):O?.label;return s(v,null,[s(`span`,{class:`${a}-selection-search`},[s(yl,{inputRef:m,prefixCls:a,id:f,open:b,inputElement:t,disabled:h,autofocus:g,autocomplete:_,editable:r.value,activeDescendantId:y,value:i.value,onKeydown:C,onMousedown:w,onChange:d,onPaste:T,onCompositionstart:E,onCompositionend:D,tabindex:x,attrs:un(e,!0)},null)]),!n.value&&O&&!c.value&&s(`span`,{class:`${a}-selection-item`,title:l.value},[s(v,{key:O.key??O.value},[k])]),u()])}}});Vl.props=Bl,Vl.inheritAttrs=!1;function Hl(e){return![$.ESC,$.SHIFT,$.BACKSPACE,$.TAB,$.WIN_KEY,$.ALT,$.META,$.WIN_KEY_RIGHT,$.CTRL,$.SEMICOLON,$.EQUALS,$.CAPS_LOCK,$.CONTEXT_MENU,$.F1,$.F2,$.F3,$.F4,$.F5,$.F6,$.F7,$.F8,$.F9,$.F10,$.F11,$.F12].includes(e)}function Ul(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:250,t=null,n;p(()=>{clearTimeout(n)});function r(r){(r||t===null)&&(t=r),clearTimeout(n),n=setTimeout(()=>{t=null},e)}return[()=>t,r]}function Wl(){let e=t=>{e.current=t};return e}var Gl=d({name:`Selector`,inheritAttrs:!1,props:{id:String,prefixCls:String,showSearch:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},values:J.array,multiple:{type:Boolean,default:void 0},mode:String,searchValue:String,activeValue:String,inputElement:J.any,autofocus:{type:Boolean,default:void 0},activeDescendantId:String,tabindex:J.oneOfType([J.number,J.string]),disabled:{type:Boolean,default:void 0},placeholder:J.any,removeIcon:J.any,maxTagCount:J.oneOfType([J.number,J.string]),maxTagTextLength:Number,maxTagPlaceholder:J.any,tagRender:Function,optionLabelRender:Function,tokenWithEnter:{type:Boolean,default:void 0},choiceTransitionName:String,onToggleOpen:{type:Function},onSearch:Function,onSearchSubmit:Function,onRemove:Function,onInputKeyDown:{type:Function},domRef:Function},setup(e,t){let{expose:n}=t,r=Wl(),i=W(!1),[a,o]=Ul(0),c=t=>{let{which:n}=t;(n===$.UP||n===$.DOWN)&&t.preventDefault(),e.onInputKeyDown&&e.onInputKeyDown(t),n===$.ENTER&&e.mode===`tags`&&!i.value&&!e.open&&e.onSearchSubmit(t.target.value),Hl(n)&&e.onToggleOpen(!0)},l=()=>{o(!0)},u=null,d=t=>{e.onSearch(t,!0,i.value)!==!1&&e.onToggleOpen(!0)},f=()=>{i.value=!0},p=t=>{i.value=!1,e.mode!==`combobox`&&d(t.target.value)},m=t=>{let{target:{value:n}}=t;if(e.tokenWithEnter&&u&&/[\r\n]/.test(u)){let e=u.replace(/[\r\n]+$/,``).replace(/\r\n/g,` `).replace(/[\r\n]/g,` `);n=n.replace(e,u)}u=null,d(n)},h=e=>{let{clipboardData:t}=e;u=t.getData(`text`)},g=e=>{let{target:t}=e;t!==r.current&&(document.body.style.msTouchAction===void 0?r.current.focus():setTimeout(()=>{r.current.focus()}))},_=t=>{let n=a();t.target!==r.current&&!n&&t.preventDefault(),(e.mode!==`combobox`&&(!e.showSearch||!n)||!e.open)&&(e.open&&e.onSearch(``,!0,!1),e.onToggleOpen())};return n({focus:()=>{r.current.focus()},blur:()=>{r.current.blur()}}),()=>{let{prefixCls:t,domRef:n,mode:a}=e,o={inputRef:r,onInputKeyDown:c,onInputMouseDown:l,onInputChange:m,onInputPaste:h,compositionStatus:i.value,onInputCompositionStart:f,onInputCompositionEnd:p},u=s(a===`multiple`||a===`tags`?zl:Vl,X(X({},e),o),null);return s(`div`,{ref:n,class:`${t}-selector`,onClick:g,onMousedown:_},[u])}}});function Kl(e,t,n){function r(r){let i=r.target;i.shadowRoot&&r.composed&&(i=r.composedPath()[0]||i);let a=[e[0]?.value,(e[1]?.value)?.getPopupElement()];t.value&&a.every(e=>e&&!e.contains(i)&&e!==i)&&n(!1)}D(()=>{window.addEventListener(`mousedown`,r)}),p(()=>{window.removeEventListener(`mousedown`,r)})}function ql(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:10,t=M(!1),n,r=()=>{clearTimeout(n)};return D(()=>{r()}),[t,(i,a)=>{r(),n=setTimeout(()=>{t.value=i,a&&a()},e)},r]}var Jl=Symbol(`BaseSelectContextKey`);function Yl(t){return e(Jl,t)}function Xl(){return C(Jl,{})}var Zl=(()=>{if(typeof navigator>`u`||typeof window>`u`)return!1;let e=navigator.userAgent||navigator.vendor||window.opera;return/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|mobile.+firefox|netfront|opera m(ob|in)i|palm( os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows ce|xda|xiino|android|ipad|playbook|silk/i.test(e)||/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|-m|r |s )|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw-(n|u)|c55\/|capi|ccwa|cdm-|cell|chtm|cldc|cmd-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc-s|devi|dica|dmob|do(c|p)o|ds(12|-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(-|_)|g1 u|g560|gene|gf-5|g-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd-(m|p|t)|hei-|hi(pt|ta)|hp( i|ip)|hs-c|ht(c(-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i-(20|go|ma)|i230|iac( |-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt( |\/)|klon|kpt |kwc-|kyo(c|k)|le(no|xi)|lg( g|\/(k|l|u)|50|54|-[a-w])|libw|lynx|m1-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(-| |o|v)|zz)|mt(50|p1|v )|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|-([1-8]|c))|phil|pire|pl(ay|uc)|pn-2|po(ck|rt|se)|prox|psio|pt-g|qa-a|qc(07|12|21|32|60|-[2-7]|i-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h-|oo|p-)|sdk\/|se(c(-|0|1)|47|mc|nd|ri)|sgh-|shar|sie(-|m)|sk-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h-|v-|v )|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl-|tdg-|tel(i|m)|tim-|t-mo|to(pl|sh)|ts(70|m-|m3|m5)|tx-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(-| )|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas-|your|zeto|zte-/i.test(e?.substring(0,4))});function Ql(e){if(!B(e))return k(e);let t=new Proxy({},{get(t,n,r){return Reflect.get(e.value,n,r)},set(t,n,r){return e.value[n]=r,!0},deleteProperty(t,n){return Reflect.deleteProperty(e.value,n)},has(t,n){return Reflect.has(e.value,n)},ownKeys(){return Object.keys(e.value)},getOwnPropertyDescriptor(){return{enumerable:!0,configurable:!0}}});return k(t)}var $l=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i({prefixCls:String,id:String,omitDomProps:Array,displayValues:Array,onDisplayValuesChange:Function,activeValue:String,activeDescendantId:String,onActiveValueChange:Function,searchValue:String,onSearch:Function,onSearchSplit:Function,maxLength:Number,OptionList:J.any,emptyOptions:Boolean}),nu=()=>({showSearch:{type:Boolean,default:void 0},tagRender:{type:Function},optionLabelRender:{type:Function},direction:{type:String},tabindex:Number,autofocus:Boolean,notFoundContent:J.any,placeholder:J.any,onClear:Function,choiceTransitionName:String,mode:String,disabled:{type:Boolean,default:void 0},loading:{type:Boolean,default:void 0},open:{type:Boolean,default:void 0},defaultOpen:{type:Boolean,default:void 0},onDropdownVisibleChange:{type:Function},getInputElement:{type:Function},getRawInputElement:{type:Function},maxTagTextLength:Number,maxTagCount:{type:[String,Number]},maxTagPlaceholder:J.any,tokenSeparators:{type:Array},allowClear:{type:Boolean,default:void 0},showArrow:{type:Boolean,default:void 0},inputIcon:J.any,clearIcon:J.any,removeIcon:J.any,animation:String,transitionName:String,dropdownStyle:{type:Object},dropdownClassName:String,dropdownMatchSelectWidth:{type:[Boolean,Number],default:void 0},dropdownRender:{type:Function},dropdownAlign:Object,placement:{type:String},getPopupContainer:{type:Function},showAction:{type:Array},onBlur:{type:Function},onFocus:{type:Function},onKeyup:Function,onKeydown:Function,onMousedown:Function,onPopupScroll:Function,onInputKeyDown:Function,onMouseenter:Function,onMouseleave:Function,onClick:Function}),ru=()=>G(G({},tu()),nu());function iu(e){return e===`tags`||e===`multiple`}var au=d({compatConfig:{MODE:3},name:`BaseSelect`,inheritAttrs:!1,props:zn(ru(),{showAction:[],notFoundContent:`Not Found`}),setup(t,n){let{attrs:r,expose:o,slots:c}=n,l=a(()=>iu(t.mode)),u=a(()=>t.showSearch===void 0?l.value||t.mode===`combobox`:t.showSearch),d=M(!1);D(()=>{d.value=Zl()});let f=Il(),m=M(null),h=Wl(),_=M(null),v=M(null),y=M(null),b=W(!1),[x,S,C]=ql();o({focus:()=>{var e;(e=v.value)==null||e.focus()},blur:()=>{var e;(e=v.value)==null||e.blur()},scrollTo:e=>y.value?.scrollTo(e)});let w=a(()=>{if(t.mode!==`combobox`)return t.searchValue;let e=t.displayValues[0]?.value;return typeof e==`string`||typeof e==`number`?String(e):``}),T=t.open===void 0?t.defaultOpen:t.open,E=M(T),O=M(T),k=e=>{E.value=t.open===void 0?e:t.open,O.value=E.value};H(()=>t.open,()=>{k(t.open)});let A=a(()=>!t.notFoundContent&&t.emptyOptions);P(()=>{O.value=E.value,(t.disabled||A.value&&O.value&&t.mode===`combobox`)&&(O.value=!1)});let j=a(()=>!A.value&&O.value),N=e=>{let n=e===void 0?!O.value:e;O.value!==n&&!t.disabled&&(k(n),t.onDropdownVisibleChange&&t.onDropdownVisibleChange(n),!n&&re.value&&(re.value=!1,S(!1,()=>{V.value=!1,b.value=!1})))},F=a(()=>(t.tokenSeparators||[]).some(e=>[` `,`\r `].includes(e))),I=(e,n,r)=>{var i,a;let o=!0,s=e;(i=t.onActiveValueChange)==null||i.call(t,null);let c=r?null:Ea(e,t.tokenSeparators);return t.mode!==`combobox`&&c&&(s=``,(a=t.onSearchSplit)==null||a.call(t,c),N(!1),o=!1),t.onSearch&&w.value!==s&&t.onSearch(s,{source:n?`typing`:`effect`}),o},L=e=>{var n;!e||!e.trim()||(n=t.onSearch)==null||n.call(t,e,{source:`submit`})};H(O,()=>{!O.value&&!l.value&&t.mode!==`combobox`&&I(``,!1,!1)},{immediate:!0,flush:`post`}),H(()=>t.disabled,()=>{E.value&&t.disabled&&k(!1),t.disabled&&!b.value&&S(!1)},{immediate:!0});let[ee,R]=Ul(),z=function(e){var n;let r=ee(),{which:i}=e;if(i===$.ENTER&&(t.mode!==`combobox`&&e.preventDefault(),O.value||N(!0)),R(!!w.value),i===$.BACKSPACE&&!r&&l.value&&!w.value&&t.displayValues.length){let e=[...t.displayValues],n=null;for(let t=e.length-1;t>=0;--t){let r=e[t];if(!r.disabled){e.splice(t,1),n=r;break}}n&&t.onDisplayValuesChange(e,{type:`remove`,values:[n]})}var a=[...arguments].slice(1);O.value&&y.value&&y.value.onKeydown(e,...a),(n=t.onKeydown)==null||n.call(t,e,...a)},B=function(e){var n=[...arguments].slice(1);O.value&&y.value&&y.value.onKeyup(e,...n),t.onKeyup&&t.onKeyup(e,...n)},te=e=>{let n=t.displayValues.filter(t=>t!==e);t.onDisplayValuesChange(n,{type:`remove`,values:[e]})},V=M(!1),ne=function(){S(!0),t.disabled||(t.onFocus&&!V.value&&t.onFocus(...arguments),t.showAction&&t.showAction.includes(`focus`)&&N(!0)),V.value=!0},re=W(!1),U=function(){if(re.value||(b.value=!0,S(!1,()=>{V.value=!1,b.value=!1,N(!1)}),t.disabled))return;let e=w.value;e&&(t.mode===`tags`?t.onSearch(e,{source:`submit`}):t.mode===`multiple`&&t.onSearch(``,{source:`blur`})),t.onBlur&&t.onBlur(...arguments)},ie=()=>{re.value=!0},ae=()=>{re.value=!1};e(`VCSelectContainerEvent`,{focus:ne,blur:U});let oe=[];D(()=>{oe.forEach(e=>clearTimeout(e)),oe.splice(0,oe.length)}),p(()=>{oe.forEach(e=>clearTimeout(e)),oe.splice(0,oe.length)});let se=function(e){var n;let{target:r}=e,i=_.value?.getPopupElement();if(i&&i.contains(r)){let e=setTimeout(()=>{var t;let n=oe.indexOf(e);n!==-1&&oe.splice(n,1),C(),!d.value&&!i.contains(document.activeElement)&&((t=v.value)==null||t.focus())});oe.push(e)}var a=[...arguments].slice(1);(n=t.onMousedown)==null||n.call(t,e,...a)},ce=M(null),le=()=>{};return D(()=>{H(j,()=>{if(j.value){let e=Math.ceil(m.value?.offsetWidth);ce.value!==e&&!Number.isNaN(e)&&(ce.value=e)}},{immediate:!0,flush:`post`})}),Kl([m,_],j,N),Yl(Ql(G(G({},i(t)),{open:O,triggerOpen:j,showSearch:u,multiple:l,toggleOpen:N}))),()=>{let e=G(G({},t),r),{prefixCls:n,id:i,open:a,defaultOpen:o,mode:d,showSearch:p,searchValue:b,onSearch:S,allowClear:C,clearIcon:T,showArrow:E,inputIcon:D,disabled:k,loading:A,getInputElement:M,getPopupContainer:P,placement:ee,animation:R,transitionName:V,dropdownStyle:ne,dropdownClassName:re,dropdownMatchSelectWidth:H,dropdownRender:U,dropdownAlign:W,showAction:oe,direction:ue,tokenSeparators:de,tagRender:fe,optionLabelRender:pe,onPopupScroll:me,onDropdownVisibleChange:he,onFocus:ge,onBlur:_e,onKeyup:K,onKeydown:ve,onMousedown:ye,onClear:be,omitDomProps:xe,getRawInputElement:Se,displayValues:Ce,onDisplayValuesChange:we,emptyOptions:Te,activeDescendantId:Ee,activeValue:De,OptionList:Oe}=e,ke=$l(e,`prefixCls.id.open.defaultOpen.mode.showSearch.searchValue.onSearch.allowClear.clearIcon.showArrow.inputIcon.disabled.loading.getInputElement.getPopupContainer.placement.animation.transitionName.dropdownStyle.dropdownClassName.dropdownMatchSelectWidth.dropdownRender.dropdownAlign.showAction.direction.tokenSeparators.tagRender.optionLabelRender.onPopupScroll.onDropdownVisibleChange.onFocus.onBlur.onKeyup.onKeydown.onMousedown.onClear.omitDomProps.getRawInputElement.displayValues.onDisplayValuesChange.emptyOptions.activeDescendantId.activeValue.OptionList`.split(`.`)),Ae=d===`combobox`&&M&&M()||null,je=typeof Se==`function`&&Se(),Me=G({},ke),Ne;je&&(Ne=e=>{N(e)}),eu.forEach(e=>{delete Me[e]}),xe?.forEach(e=>{delete Me[e]});let Pe=E===void 0?A||!l.value&&d!==`combobox`:E,Fe;Pe&&(Fe=s(ll,{class:Z(`${n}-arrow`,{[`${n}-arrow-loading`]:A}),customizeIcon:D,customizeIconProps:{loading:A,searchValue:w.value,open:O.value,focused:x.value,showSearch:u.value}},null));let Ie;!k&&C&&(Ce.length||w.value)&&(Ie=s(ll,{class:`${n}-clear`,onMousedown:()=>{be?.(),we([],{type:`clear`,values:Ce}),I(``,!1,!1)},customizeIcon:T},{default:()=>[g(`×`)]}));let Le=s(Oe,{ref:y},G(G({},f.customSlots),{option:c.option})),Re=Z(n,r.class,{[`${n}-focused`]:x.value,[`${n}-multiple`]:l.value,[`${n}-single`]:!l.value,[`${n}-allow-clear`]:C,[`${n}-show-arrow`]:Pe,[`${n}-disabled`]:k,[`${n}-loading`]:A,[`${n}-open`]:O.value,[`${n}-customize-input`]:Ae,[`${n}-show-search`]:u.value}),ze=s(cl,{ref:_,disabled:k,prefixCls:n,visible:j.value,popupElement:Le,containerWidth:ce.value,animation:R,transitionName:V,dropdownStyle:ne,dropdownClassName:re,direction:ue,dropdownMatchSelectWidth:H,dropdownRender:U,dropdownAlign:W,placement:ee,getPopupContainer:P,empty:Te,getTriggerDOMNode:()=>h.current,onPopupVisibleChange:Ne,onPopupMouseEnter:le,onPopupFocusin:ie,onPopupFocusout:ae},{default:()=>je?Xe(je)&&Sn(je,{ref:h},!1,!0):s(Gl,X(X({},t),{},{domRef:h,prefixCls:n,inputElement:Ae,ref:v,id:i,showSearch:u.value,mode:d,activeDescendantId:Ee,tagRender:fe,optionLabelRender:pe,values:Ce,open:O.value,onToggleOpen:N,activeValue:De,searchValue:w.value,onSearch:I,onSearchSubmit:L,onRemove:te,tokenWithEnter:F.value}),null)}),Be;return Be=je?ze:s(`div`,X(X({},Me),{},{class:Re,ref:m,onMousedown:se,onKeydown:z,onKeyup:B}),[x.value&&!O.value&&s(`span`,{style:{width:0,height:0,position:`absolute`,overflow:`hidden`,opacity:0},"aria-live":`polite`},[`${Ce.map(e=>{let{label:t,value:n}=e;return[`number`,`string`].includes(typeof t)?t:n}).join(`, `)}`]),ze,Fe,Ie]),Be}}}),ou=(e,t)=>{let{height:n,offset:r,prefixCls:i,onInnerResize:a}=e,{slots:o}=t,c={},l={display:`flex`,flexDirection:`column`};return r!==void 0&&(c={height:`${n}px`,position:`relative`,overflow:`hidden`},l=G(G({},l),{transform:`translateY(${r}px)`,position:`absolute`,left:0,right:0,top:0})),s(`div`,{style:c},[s(_i,{onResize:e=>{let{offsetHeight:t}=e;t&&a&&a()}},{default:()=>[s(`div`,{style:l,class:Z({[`${i}-holder-inner`]:i})},[o.default?.call(o)])]})])};ou.displayName=`Filter`,ou.inheritAttrs=!1,ou.props={prefixCls:String,height:Number,offset:Number,onInnerResize:Function};var su=(e,t)=>{let{setRef:n}=e,{slots:r}=t,i=pe(r.default?.call(r));return i&&i.length?o(i[0],{ref:n}):i};su.props={setRef:{type:Function,default:()=>{}}};var cu=20;function lu(e){return`touches`in e?e.touches[0].pageY:e.pageY}var uu=d({compatConfig:{MODE:3},name:`ScrollBar`,inheritAttrs:!1,props:{prefixCls:String,scrollTop:Number,scrollHeight:Number,height:Number,count:Number,onScroll:{type:Function},onStartMove:{type:Function},onStopMove:{type:Function}},setup(){return{moveRaf:null,scrollbarRef:Wl(),thumbRef:Wl(),visibleTimeout:null,state:k({dragging:!1,pageY:null,startTop:null,visible:!1})}},watch:{scrollTop:{handler(){this.delayHidden()},flush:`post`}},mounted(){var e,t;(e=this.scrollbarRef.current)==null||e.addEventListener(`touchstart`,this.onScrollbarTouchStart,Jn?{passive:!1}:!1),(t=this.thumbRef.current)==null||t.addEventListener(`touchstart`,this.onMouseDown,Jn?{passive:!1}:!1)},beforeUnmount(){this.removeEvents(),clearTimeout(this.visibleTimeout)},methods:{delayHidden(){clearTimeout(this.visibleTimeout),this.state.visible=!0,this.visibleTimeout=setTimeout(()=>{this.state.visible=!1},2e3)},onScrollbarTouchStart(e){e.preventDefault()},onContainerMouseDown(e){e.stopPropagation(),e.preventDefault()},patchEvents(){window.addEventListener(`mousemove`,this.onMouseMove),window.addEventListener(`mouseup`,this.onMouseUp),this.thumbRef.current.addEventListener(`touchmove`,this.onMouseMove,Jn?{passive:!1}:!1),this.thumbRef.current.addEventListener(`touchend`,this.onMouseUp)},removeEvents(){window.removeEventListener(`mousemove`,this.onMouseMove),window.removeEventListener(`mouseup`,this.onMouseUp),this.scrollbarRef.current.removeEventListener(`touchstart`,this.onScrollbarTouchStart,Jn?{passive:!1}:!1),this.thumbRef.current&&(this.thumbRef.current.removeEventListener(`touchstart`,this.onMouseDown,Jn?{passive:!1}:!1),this.thumbRef.current.removeEventListener(`touchmove`,this.onMouseMove,Jn?{passive:!1}:!1),this.thumbRef.current.removeEventListener(`touchend`,this.onMouseUp)),cr.cancel(this.moveRaf)},onMouseDown(e){let{onStartMove:t}=this.$props;G(this.state,{dragging:!0,pageY:lu(e),startTop:this.getTop()}),t(),this.patchEvents(),e.stopPropagation(),e.preventDefault()},onMouseMove(e){let{dragging:t,pageY:n,startTop:r}=this.state,{onScroll:i}=this.$props;if(cr.cancel(this.moveRaf),t){let t=r+(lu(e)-n),a=this.getEnableScrollRange(),o=this.getEnableHeightRange(),s=o?t/o:0,c=Math.ceil(s*a);this.moveRaf=cr(()=>{i(c)})}},onMouseUp(){let{onStopMove:e}=this.$props;this.state.dragging=!1,e(),this.removeEvents()},getSpinHeight(){let{height:e,scrollHeight:t}=this.$props,n=e/t*100;return n=Math.max(n,cu),n=Math.min(n,e/2),Math.floor(n)},getEnableScrollRange(){let{scrollHeight:e,height:t}=this.$props;return e-t||0},getEnableHeightRange(){let{height:e}=this.$props;return e-this.getSpinHeight()||0},getTop(){let{scrollTop:e}=this.$props,t=this.getEnableScrollRange(),n=this.getEnableHeightRange();return e===0||t===0?0:e/t*n},showScroll(){let{height:e,scrollHeight:t}=this.$props;return t>e}},render(){let{dragging:e,visible:t}=this.state,{prefixCls:n}=this.$props,r=this.getSpinHeight()+`px`,i=this.getTop()+`px`,a=this.showScroll(),o=a&&t;return s(`div`,{ref:this.scrollbarRef,class:Z(`${n}-scrollbar`,{[`${n}-scrollbar-show`]:a}),style:{width:`8px`,top:0,bottom:0,right:0,position:`absolute`,display:o?void 0:`none`},onMousedown:this.onContainerMouseDown,onMousemove:this.delayHidden},[s(`div`,{ref:this.thumbRef,class:Z(`${n}-scrollbar-thumb`,{[`${n}-scrollbar-thumb-moving`]:e}),style:{width:`100%`,height:r,top:i,left:0,position:`absolute`,background:`rgba(0, 0, 0, 0.5)`,borderRadius:`99px`,cursor:`pointer`,userSelect:`none`},onMousedown:this.onMouseDown},null)])}});function du(e,t,n,r){let i=new Map,a=new Map,o=W(Symbol(`update`));H(e,()=>{o.value=Symbol(`update`)});let s;function c(){cr.cancel(s)}function l(){c(),s=cr(()=>{i.forEach((e,t)=>{if(e&&e.offsetParent){let{offsetHeight:n}=e;a.get(t)!==n&&(o.value=Symbol(`update`),a.set(t,e.offsetHeight))}})})}function u(e,a){let o=t(e),s=i.get(o);a?(i.set(o,a.$el||a),l()):i.delete(o),!s!=!a&&(a?n?.(e):r?.(e))}return E(()=>{c()}),[u,l,a,o]}function fu(e,t,n,r,i,a,o,s){let c;return l=>{if(l==null){s();return}cr.cancel(c);let u=t.value,d=r.itemHeight;if(typeof l==`number`)o(l);else if(l&&typeof l==`object`){let t,{align:r}=l;`index`in l?{index:t}=l:t=u.findIndex(e=>i(e)===l.key);let{offset:s=0}=l,f=(l,p)=>{if(l<0||!e.value)return;let m=e.value.clientHeight,h=!1,g=p;if(m){let a=p||r,c=0,l=0,f=0,_=Math.min(u.length,t);for(let e=0;e<=_;e+=1){let r=i(u[e]);l=c;let a=n.get(r);f=l+(a===void 0?d:a),c=f,e===t&&a===void 0&&(h=!0)}let v=e.value.scrollTop,y=null;switch(a){case`top`:y=l-s;break;case`bottom`:y=f-m+s;break;default:{let e=v+m;le&&(g=`bottom`)}}y!==null&&y!==v&&o(y)}c=cr(()=>{h&&a(),f(l-1,g)},2)};f(5)}}}var pu=typeof navigator==`object`&&/Firefox/i.test(navigator.userAgent),mu=((e,t)=>{let n=!1,r=null;function i(){clearTimeout(r),n=!0,r=setTimeout(()=>{n=!1},50)}return function(a){let o=arguments.length>1&&arguments[1]!==void 0&&arguments[1],s=a<0&&e.value||a>0&&t.value;return o&&s?(clearTimeout(r),n=!1):(!s||n)&&i(),!n&&s}});function hu(e,t,n,r){let i=0,a=null,o=null,s=!1,c=mu(t,n);function l(t){if(!e.value)return;cr.cancel(a);let{deltaY:n}=t;i+=n,o=n,!c(n)&&(pu||t.preventDefault(),a=cr(()=>{r(i*(s?10:1)),i=0}))}function u(t){e.value&&(s=t.detail===o)}return[l,u]}var gu=14/15;function _u(e,t,n){let r=!1,i=0,a=null,o=null,s=()=>{a&&(a.removeEventListener(`touchmove`,c),a.removeEventListener(`touchend`,l))},c=e=>{if(r){let t=Math.ceil(e.touches[0].pageY),r=i-t;i=t,n(r)&&e.preventDefault(),clearInterval(o),o=setInterval(()=>{r*=gu,(!n(r,!0)||Math.abs(r)<=.1)&&clearInterval(o)},16)}},l=()=>{r=!1,s()},u=e=>{s(),e.touches.length===1&&!r&&(r=!0,i=Math.ceil(e.touches[0].pageY),a=e.target,a.addEventListener(`touchmove`,c,{passive:!1}),a.addEventListener(`touchend`,l))},d=()=>{};D(()=>{document.addEventListener(`touchmove`,d,{passive:!1}),H(e,e=>{t.value.removeEventListener(`touchstart`,u),s(),clearInterval(o),e&&t.value.addEventListener(`touchstart`,u,{passive:!1})},{immediate:!0})}),p(()=>{document.removeEventListener(`touchmove`,d)})}var vu=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let a=i(e,t+n,{}),c=o(e);return s(su,{key:c,setRef:t=>r(e,t)},{default:()=>[a]})})}var Su=d({compatConfig:{MODE:3},name:`List`,inheritAttrs:!1,props:{prefixCls:String,data:J.array,height:Number,itemHeight:Number,fullHeight:{type:Boolean,default:void 0},itemKey:{type:[String,Number,Function],required:!0},component:{type:[String,Object]},virtual:{type:Boolean,default:void 0},children:Function,onScroll:Function,onMousedown:Function,onMouseenter:Function,onVisibleChange:Function},setup(e,t){let{expose:n}=t,r=a(()=>{let{height:t,itemHeight:n,virtual:r}=e;return!!(r!==!1&&t&&n)}),i=a(()=>{let{height:t,itemHeight:n,data:i}=e;return r.value&&i&&n*i.length>t}),o=k({scrollTop:0,scrollMoving:!1}),s=a(()=>e.data||yu),c=M([]);H(s,()=>{c.value=se(s.value).slice()},{immediate:!0});let l=M(e=>void 0);H(()=>e.itemKey,e=>{typeof e==`function`?l.value=e:l.value=t=>t?.[e]},{immediate:!0});let u=M(),d=M(),f=M(),m=e=>l.value(e),h={getKey:m};function g(e){let t;t=typeof e==`function`?e(o.scrollTop):e;let n=T(t);u.value&&(u.value.scrollTop=n),o.scrollTop=n}let[_,v,y,b]=du(c,m,null,null),S=k({scrollHeight:void 0,start:0,end:0,offset:void 0}),C=M(0);D(()=>{x(()=>{C.value=d.value?.offsetHeight||0})}),O(()=>{x(()=>{C.value=d.value?.offsetHeight||0})}),H([r,c],()=>{r.value||G(S,{scrollHeight:void 0,start:0,end:c.value.length-1,offset:void 0})},{immediate:!0}),H([r,c,C,i],()=>{r.value&&!i.value&&G(S,{scrollHeight:C.value,start:0,end:c.value.length-1,offset:void 0}),u.value&&(o.scrollTop=u.value.scrollTop)},{immediate:!0}),H([i,r,()=>o.scrollTop,c,b,()=>e.height,C],()=>{if(!r.value||!i.value)return;let t=0,n,a,s,l=c.value.length,u=c.value,d=o.scrollTop,{itemHeight:f,height:p}=e,h=d+p;for(let e=0;e=d&&(n=e,a=t),s===void 0&&c>h&&(s=e),t=c}n===void 0&&(n=0,a=0,s=Math.ceil(p/f)),s===void 0&&(s=l-1),s=Math.min(s+1,l),G(S,{scrollHeight:t,start:n,end:s,offset:a})},{immediate:!0});let w=a(()=>S.scrollHeight-e.height);function T(e){let t=e;return Number.isNaN(w.value)||(t=Math.min(t,w.value)),t=Math.max(t,0),t}let E=a(()=>o.scrollTop<=0),A=a(()=>o.scrollTop>=w.value),j=mu(E,A);function N(e){g(e)}function F(t){var n;let{scrollTop:r}=t.currentTarget;r!==o.scrollTop&&g(r),(n=e.onScroll)==null||n.call(e,t)}let[I,L]=hu(r,E,A,e=>{g(t=>t+e)});_u(r,u,(e,t)=>!j(e,t)&&(I({preventDefault(){},deltaY:e}),!0));function ee(e){r.value&&e.preventDefault()}let R=()=>{u.value&&(u.value.removeEventListener(`wheel`,I,Jn?{passive:!1}:!1),u.value.removeEventListener(`DOMMouseScroll`,L),u.value.removeEventListener(`MozMousePixelScroll`,ee))};P(()=>{x(()=>{u.value&&(R(),u.value.addEventListener(`wheel`,I,Jn?{passive:!1}:!1),u.value.addEventListener(`DOMMouseScroll`,L),u.value.addEventListener(`MozMousePixelScroll`,ee))})}),p(()=>{R()}),n({scrollTo:fu(u,c,y,e,m,v,g,()=>{var e;(e=f.value)==null||e.delayHidden()})});let z=a(()=>{let t=null;return e.height&&(t=G({[e.fullHeight?`height`:`maxHeight`]:e.height+`px`},bu),r.value&&(t.overflowY=`hidden`,o.scrollMoving&&(t.pointerEvents=`none`))),t});return H([()=>S.start,()=>S.end,c],()=>{if(e.onVisibleChange){let t=c.value.slice(S.start,S.end+1);e.onVisibleChange(t,c.value)}},{flush:`post`}),{state:o,mergedData:c,componentStyle:z,onFallbackScroll:F,onScrollBar:N,componentRef:u,useVirtual:r,calRes:S,collectHeight:v,setInstance:_,sharedConfig:h,scrollBarRef:f,fillerInnerRef:d,delayHideScrollBar:()=>{var e;(e=f.value)==null||e.delayHidden()}}},render(){let e=G(G({},this.$props),this.$attrs),{prefixCls:t=`rc-virtual-list`,height:n,itemHeight:r,fullHeight:i,data:a,itemKey:o,virtual:c,component:l=`div`,onScroll:u,children:d=this.$slots.default,style:f,class:p}=e,m=vu(e,[`prefixCls`,`height`,`itemHeight`,`fullHeight`,`data`,`itemKey`,`virtual`,`component`,`onScroll`,`children`,`style`,`class`]),h=Z(t,p),{scrollTop:g}=this.state,{scrollHeight:_,offset:v,start:y,end:b}=this.calRes,{componentStyle:x,onFallbackScroll:S,onScrollBar:C,useVirtual:w,collectHeight:T,sharedConfig:E,setInstance:D,mergedData:O,delayHideScrollBar:k}=this;return s(`div`,X({style:G(G({},f),{position:`relative`}),class:h},m),[s(l,{class:`${t}-holder`,style:x,ref:`componentRef`,onScroll:S,onMouseenter:k},{default:()=>[s(ou,{prefixCls:t,height:_,offset:v,onInnerResize:T,ref:`fillerInnerRef`},{default:()=>xu(O,y,b,D,d,E)})]}),w&&s(uu,{ref:`scrollBarRef`,prefixCls:t,scrollTop:g,height:n,scrollHeight:_,count:O.length,onScroll:C,onStartMove:()=>{this.state.scrollMoving=!0},onStopMove:()=>{this.state.scrollMoving=!1}},null)])}});function Cu(e,t,n){let r=W(e());return H(t,(t,i)=>{n?n(t,i)&&(r.value=e()):r.value=e()}),r}function wu(){return/(mac\sos|macintosh)/i.test(navigator.appVersion)}var Tu=Symbol(`SelectContextKey`);function Eu(t){return e(Tu,t)}function Du(){return C(Tu,{})}var Ou=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i`${i.prefixCls}-item`),l=Cu(()=>o.flattenOptions,[()=>i.open,()=>o.flattenOptions],e=>e[0]),u=Wl(),d=e=>{e.preventDefault()},f=e=>{u.current&&u.current.scrollTo(typeof e==`number`?{index:e}:e)},p=function(e){let t=arguments.length>1&&arguments[1]!==void 0?arguments[1]:1,n=l.value.length;for(let r=0;r1&&arguments[1]!==void 0&&arguments[1];m.activeIndex=e;let n={source:t?`keyboard`:`mouse`},r=l.value[e];if(!r){o.onActiveValue(null,-1,n);return}o.onActiveValue(r.value,e,n)};H([()=>l.value.length,()=>i.searchValue],()=>{h(o.defaultActiveFirstOption===!1?-1:p(0))},{immediate:!0});let g=e=>o.rawValues.has(e)&&i.mode!==`combobox`;H([()=>i.open,()=>i.searchValue],()=>{if(!i.multiple&&i.open&&o.rawValues.size===1){let e=Array.from(o.rawValues)[0],t=se(l.value).findIndex(t=>{let{data:n}=t;return n[o.fieldNames.value]===e});t!==-1&&(h(t),x(()=>{f(t)}))}i.open&&x(()=>{var e;(e=u.current)==null||e.scrollTo(void 0)})},{immediate:!0,flush:`post`});let _=e=>{e!==void 0&&o.onSelect(e,{selected:!o.rawValues.has(e)}),i.multiple||i.toggleOpen(!1)},y=e=>typeof e.label==`function`?e.label():e.label;function b(e){let t=l.value[e];if(!t)return null;let n=t.data||{},{value:r}=n,{group:a}=t,o=un(n,!0),c=y(t);return t?s(`div`,X(X({"aria-label":typeof c==`string`&&!a?c:null},o),{},{key:e,role:a?`presentation`:`option`,id:`${i.id}_list_${e}`,"aria-selected":g(r)}),[r]):null}return n({onKeydown:e=>{let{which:t,ctrlKey:n}=e;switch(t){case $.N:case $.P:case $.UP:case $.DOWN:{let e=0;if(t===$.UP?e=-1:t===$.DOWN?e=1:wu()&&n&&(t===$.N?e=1:t===$.P&&(e=-1)),e!==0){let t=p(m.activeIndex+e,e);f(t),h(t,!0)}break}case $.ENTER:{let t=l.value[m.activeIndex];t&&!t.data.disabled?_(t.value):_(void 0),i.open&&e.preventDefault();break}case $.ESC:i.toggleOpen(!1),i.open&&e.stopPropagation()}},onKeyup:()=>{},scrollTo:e=>{f(e)}}),()=>{let{id:e,notFoundContent:t,onPopupScroll:n}=i,{menuItemSelectedIcon:a,fieldNames:f,virtual:p,listHeight:x,listItemHeight:S}=o,C=r.option,{activeIndex:w}=m,T=Object.keys(f).map(e=>f[e]);return l.value.length===0?s(`div`,{role:`listbox`,id:`${e}_list`,class:`${c.value}-empty`,onMousedown:d},[t]):s(v,null,[s(`div`,{role:`listbox`,id:`${e}_list`,style:{height:0,width:0,overflow:`hidden`}},[b(w-1),b(w),b(w+1)]),s(Su,{itemKey:`key`,ref:u,data:l.value,height:x,itemHeight:S,fullHeight:!1,onMousedown:d,onScroll:n,virtual:p},{default:(e,t)=>{let{group:n,groupOption:r,data:i,value:o}=e,{key:l}=i,u=typeof e.label==`function`?e.label():e.label;if(n){let e=i.title??(ku(u)&&u);return s(`div`,{class:Z(c.value,`${c.value}-group`),title:e},[C?C(i):u===void 0?l:u])}let{disabled:d,title:f,children:p,style:m,class:v,className:b}=i,x=Ou(i,[`disabled`,`title`,`children`,`style`,`class`,`className`]),S=nr(x,T),E=g(o),D=`${c.value}-option`,O=Z(c.value,D,v,b,{[`${D}-grouped`]:r,[`${D}-active`]:w===t&&!d,[`${D}-disabled`]:d,[`${D}-selected`]:E}),k=y(e),A=!a||typeof a==`function`||E,j=typeof k==`number`?k:k||o,M=ku(j)?j.toString():void 0;return f!==void 0&&(M=f),s(`div`,X(X({},S),{},{"aria-selected":E,class:O,title:M,onMousemove:e=>{x.onMousemove&&x.onMousemove(e),!(w===t||d)&&h(t)},onClick:e=>{d||_(o),x.onClick&&x.onClick(e)},style:m}),[s(`div`,{class:`${D}-content`},[C?C(i):j]),Xe(a)||E,A&&s(ll,{class:`${c.value}-option-state`,customizeIcon:a,customizeIconProps:{isSelected:E}},{default:()=>[E?`✓`:null]})])}})])}}}),ju=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i1&&arguments[1]!==void 0&&arguments[1];return pe(e).map((e,n)=>{if(!Xe(e)||!e.type)return null;let{type:{isSelectOptGroup:r},key:i,children:a,props:o}=e;if(t||!r)return Mu(e);let s=a&&a.default?a.default():void 0,c=o?.label||a.label?.call(a)||i;return G(G({key:`__RC_SELECT_GRP__${i===null?n:String(i)}__`},o),{label:c,options:Nu(s||[])})}).filter(e=>e)}function Pu(e,t,n){let r=M(),i=M(),a=M(),o=M([]);return H([e,t],()=>{e.value?o.value=se(e.value).slice():o.value=Nu(t.value)},{immediate:!0,deep:!0}),P(()=>{let e=o.value,t=new Map,s=new Map,c=n.value;function l(e){let n=arguments.length>1&&arguments[1]!==void 0&&arguments[1];for(let r=0;r0&&arguments[0]!==void 0?arguments[0]:W(``),t=`rc_select_${Lu()}`;return e.value||t}function zu(e){return Array.isArray(e)?e:e===void 0?[]:[e]}typeof window<`u`&&window.document&&window.document.documentElement;function Bu(e,t){return zu(e).join(``).toUpperCase().includes(t)}var Vu=((e,t,n,r,i)=>a(()=>{let a=n.value,o=i?.value,s=r?.value;if(!a||s===!1)return e.value;let{options:c,label:l,value:u}=t.value,d=[],f=typeof s==`function`,p=a.toUpperCase(),m=f?s:(e,t)=>o?Bu(t[o],p):t[c]?Bu(t[l===`children`?`label`:l],p):Bu(t[u],p),h=f?e=>Ta(e):e=>e;return e.value.forEach(e=>{if(e[c]){if(m(a,h(e)))d.push(e);else{let t=e[c].filter(e=>m(a,h(e)));t.length&&d.push(G(G({},e),{[c]:t}))}return}m(a,h(e))&&d.push(e)}),d})),Hu=((e,t)=>{let n=M({values:new Map,options:new Map});return[a(()=>{let{values:r,options:i}=n.value,a=e.value.map(e=>e.label===void 0?G(G({},e),{label:r.get(e.value)?.label}):e),o=new Map,s=new Map;return a.forEach(e=>{o.set(e.value,e),s.set(e.value,t.value.get(e.value)||i.get(e.value))}),n.value.values=o,n.value.options=s,a}),e=>t.value.get(e)||n.value.options.get(e)]});function Uu(e,t){let{defaultValue:n,value:r=W()}=t||{},i=typeof e==`function`?e():e;r.value!==void 0&&(i=b(r)),n!==void 0&&(i=typeof n==`function`?n():n);let a=W(i),o=W(i);P(()=>{let e=r.value===void 0?a.value:r.value;t.postState&&(e=t.postState(e)),o.value=e});function s(e){let n=o.value;a.value=e,se(o.value)!==e&&t.onChange&&t.onChange(e,n)}return H(r,()=>{a.value=r.value}),[o,s]}var Wu=[`inputValue`];function Gu(){return G(G({},nu()),{prefixCls:String,id:String,backfill:{type:Boolean,default:void 0},fieldNames:Object,inputValue:String,searchValue:String,onSearch:Function,autoClearSearchValue:{type:Boolean,default:void 0},onSelect:Function,onDeselect:Function,filterOption:{type:[Boolean,Function],default:void 0},filterSort:Function,optionFilterProp:String,optionLabelProp:String,options:Array,defaultActiveFirstOption:{type:Boolean,default:void 0},virtual:{type:Boolean,default:void 0},listHeight:Number,listItemHeight:Number,menuItemSelectedIcon:J.any,mode:String,labelInValue:{type:Boolean,default:void 0},value:J.any,defaultValue:J.any,onChange:Function,children:Array})}function Ku(e){return!e||typeof e!=`object`}var qu=d({compatConfig:{MODE:3},name:`VcSelect`,inheritAttrs:!1,props:zn(Gu(),{prefixCls:`vc-select`,autoClearSearchValue:!0,listHeight:200,listItemHeight:20,dropdownMatchSelectWidth:!0}),setup(e,t){let{expose:n,attrs:r,slots:i}=t,o=Ru(y(e,`id`)),c=a(()=>iu(e.mode)),l=a(()=>!!(!e.options&&e.children)),u=a(()=>e.filterOption===void 0&&e.mode===`combobox`?!1:e.filterOption),d=a(()=>Ca(e.fieldNames,l.value)),[f,p]=Uu(``,{value:a(()=>e.searchValue===void 0?e.inputValue:e.searchValue),postState:e=>e||``}),m=Pu(y(e,`options`),y(e,`children`),d),{valueOptions:h,labelOptions:g,options:_}=m,v=t=>zu(t).map(t=>{let n,r,i,a;Ku(t)?n=t:(i=t.key,r=t.label,n=t.value??i);let o=h.value.get(n);return o&&(r===void 0&&(r=o?.[e.optionLabelProp||d.value.label]),i===void 0&&(i=o?.key??n),a=o?.disabled),{label:r,value:n,key:i,disabled:a,option:o}}),[b,x]=Uu(e.defaultValue,{value:y(e,`value`)}),[S,C]=Hu(a(()=>{let t=v(b.value);return e.mode===`combobox`&&!t[0]?.value?[]:t}),h),w=a(()=>{if(!e.mode&&S.value.length===1){let e=S.value[0];if(e.value===null&&(e.label===null||e.label===void 0))return[]}return S.value.map(e=>G(G({},e),{label:(typeof e.label==`function`?e.label():e.label)??e.value}))}),T=a(()=>new Set(S.value.map(e=>e.value)));P(()=>{if(e.mode===`combobox`){let e=S.value[0]?.value;e!=null&&p(String(e))}},{flush:`post`});let E=(e,t)=>{let n=t??e;return{[d.value.value]:e,[d.value.label]:n}},D=M();P(()=>{if(e.mode!==`tags`){D.value=_.value;return}let t=_.value.slice(),n=e=>h.value.has(e);[...S.value].sort((e,t)=>e.value{let r=e.value;n(r)||t.push(E(r,e.label))}),D.value=t});let O=Vu(D,d,f,u,y(e,`optionFilterProp`)),k=a(()=>e.mode!==`tags`||!f.value||O.value.some(t=>t[e.optionFilterProp||`value`]===f.value)?O.value:[E(f.value),...O.value]),A=a(()=>e.filterSort?[...k.value].sort((t,n)=>e.filterSort(t,n)):k.value),j=a(()=>wa(A.value,{fieldNames:d.value,childrenAsData:l.value})),N=t=>{let n=v(t);if(x(n),e.onChange&&(n.length!==S.value.length||n.some((e,t)=>S.value[t]?.value!==e?.value))){let t=e.labelInValue?n.map(e=>G(G({},e),{originLabel:e.label,label:typeof e.label==`function`?e.label():e.label})):n.map(e=>e.value),r=n.map(e=>Ta(C(e.value)));e.onChange(c.value?t:t[0],c.value?r:r[0])}},[F,I]=Tn(null),[L,ee]=Tn(0),R=a(()=>e.defaultActiveFirstOption===void 0?e.mode!==`combobox`:e.defaultActiveFirstOption),z=function(t,n){let{source:r=`keyboard`}=arguments.length>2&&arguments[2]!==void 0?arguments[2]:{};ee(n),e.backfill&&e.mode===`combobox`&&t!==null&&r===`keyboard`&&I(String(t))},B=(t,n)=>{let r=()=>{let n=C(t),r=n?.[d.value.label];return[e.labelInValue?{label:typeof r==`function`?r():r,originLabel:r,value:t,key:n?.key??t}:t,Ta(n)]};if(n&&e.onSelect){let[t,n]=r();e.onSelect(t,n)}else if(!n&&e.onDeselect){let[t,n]=r();e.onDeselect(t,n)}},te=(t,n)=>{let r,i=!c.value||n.selected;r=i?c.value?[...S.value,t]:[t]:S.value.filter(e=>e.value!==t),N(r),B(t,i),e.mode===`combobox`?I(``):(!c.value||e.autoClearSearchValue)&&(p(``),I(``))},V=(e,t)=>{N(e),(t.type===`remove`||t.type===`clear`)&&t.values.forEach(e=>{B(e.value,!1)})},ne=(t,n)=>{var r;if(p(t),I(null),n.source===`submit`){let e=(t||``).trim();if(e){let t=Array.from(new Set([...T.value,e]));N(t),B(e,!0),p(``)}return}n.source!==`blur`&&(e.mode===`combobox`&&N(t),(r=e.onSearch)==null||r.call(e,t))},re=t=>{let n=t;e.mode!==`tags`&&(n=t.map(e=>g.value.get(e)?.value).filter(e=>e!==void 0));let r=Array.from(new Set([...T.value,...n]));N(r),r.forEach(e=>{B(e,!0)})},H=a(()=>e.virtual!==!1&&e.dropdownMatchSelectWidth!==!1);Eu(Ql(G(G({},m),{flattenOptions:j,onActiveValue:z,defaultActiveFirstOption:R,onSelect:te,menuItemSelectedIcon:y(e,`menuItemSelectedIcon`),rawValues:T,fieldNames:d,virtual:H,listHeight:y(e,`listHeight`),listItemHeight:y(e,`listItemHeight`),childrenAsData:l})));let U=W();n({focus(){var e;(e=U.value)==null||e.focus()},blur(){var e;(e=U.value)==null||e.blur()},scrollTo(e){var t;(t=U.value)==null||t.scrollTo(e)}});let ie=a(()=>nr(e,`id.mode.prefixCls.backfill.fieldNames.inputValue.searchValue.onSearch.autoClearSearchValue.onSelect.onDeselect.dropdownMatchSelectWidth.filterOption.filterSort.optionFilterProp.optionLabelProp.options.children.defaultActiveFirstOption.menuItemSelectedIcon.virtual.listHeight.listItemHeight.value.defaultValue.labelInValue.onChange`.split(`.`)));return()=>s(au,X(X(X({},ie.value),r),{},{id:o,prefixCls:e.prefixCls,ref:U,omitDomProps:Wu,mode:e.mode,displayValues:w.value,onDisplayValuesChange:V,searchValue:f.value,onSearch:ne,onSearchSplit:re,dropdownMatchSelectWidth:e.dropdownMatchSelectWidth,OptionList:Au,emptyOptions:!j.value.length,activeValue:F.value,activeDescendantId:`${o}_list_${L.value}`}),i)}}),Ju=()=>null;Ju.isSelectOption=!0,Ju.displayName=`ASelectOption`;var Yu=()=>null;Yu.isSelectOptGroup=!0,Yu.displayName=`ASelectOptGroup`;var Xu=qu,Zu={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M884 256h-75c-5.1 0-9.9 2.5-12.9 6.6L512 654.2 227.9 262.6c-3-4.1-7.8-6.6-12.9-6.6h-75c-6.5 0-10.3 7.4-6.5 12.7l352.6 486.1c12.8 17.6 39 17.6 51.7 0l352.6-486.1c3.9-5.3.1-12.7-6.4-12.7z`}}]},name:`down`,theme:`outlined`};function Qu(e){for(var t=1;t1&&arguments[1]!==void 0?arguments[1]:{},{loading:n,multiple:r,prefixCls:i,hasFeedback:a,feedbackIcon:o,showArrow:c}=e,l=e.suffixIcon||t.suffixIcon&&t.suffixIcon(),u=e.clearIcon||t.clearIcon&&t.clearIcon(),d=e.menuItemSelectedIcon||t.menuItemSelectedIcon&&t.menuItemSelectedIcon(),f=e.removeIcon||t.removeIcon&&t.removeIcon(),p=u??s(yt,null,null),m=e=>s(v,null,[c!==!1&&e,a&&o]),h=null;if(l!==void 0)h=m(l);else if(n)h=m(s(at,{spin:!0},null));else{let e=`${i}-suffix`;h=t=>{let{open:n,showSearch:r}=t;return m(s(n&&r?mr:ed,{class:e},null))}}let g=null;g=d===void 0?r?s(id,null,null):null:d;let _=null;return _=f===void 0?s(_t,null,null):f,{clearIcon:p,suffixIcon:h,itemIcon:g,removeIcon:_}}var od=Symbol(`ContextProps`),sd=Symbol(`InternalContextProps`),cd=function(t){let n=arguments.length>1&&arguments[1]!==void 0?arguments[1]:a(()=>!0),r=W(new Map);m(),H([n,r],()=>{}),e(od,t),e(sd,{addFormItemField:(e,t)=>{r.value.set(e,t),r.value=new Map(r.value)},removeFormItemField:e=>{r.value.delete(e),r.value=new Map(r.value)}})},ld={id:a(()=>void 0),onFieldBlur:()=>{},onFieldChange:()=>{},clearValidate:()=>{}},ud={addFormItemField:()=>{},removeFormItemField:()=>{}},dd=()=>{let t=C(sd,ud),n=Symbol(`FormItemFieldKey`),r=m();return t.addFormItemField(n,r.type),p(()=>{t.removeFormItemField(n)}),e(sd,ud),e(od,ld),C(od,ld)},fd=d({compatConfig:{MODE:3},name:`AFormItemRest`,setup(t,n){let{slots:r}=n;return e(sd,ud),e(od,ld),()=>r.default?.call(r)}}),pd=ur({}),md=d({name:`NoFormStatus`,setup(e,t){let{slots:n}=t;return pd.useProvide({}),()=>n.default?.call(n)}});function hd(e,t,n){return Z({[`${e}-status-success`]:t===`success`,[`${e}-status-warning`]:t===`warning`,[`${e}-status-error`]:t===`error`,[`${e}-status-validating`]:t===`validating`,[`${e}-has-feedback`]:n})}var gd=(e,t)=>t||e,_d=`[object Symbol]`;function vd(e){return typeof e==`symbol`||En(e)&&hn(e)==_d}function yd(e,t){for(var n=-1,r=e==null?0:e.length,i=Array(r);++n0){if(++t>=Wd)return arguments[0]}else t=0;return e.apply(void 0,arguments)}}function Jd(e){return function(){return e}}var Yd=function(){try{var e=gn(Object,`defineProperty`);return e({},``,{}),e}catch{}}(),Xd=qd(Yd?function(e,t){return Yd(e,`toString`,{configurable:!0,enumerable:!1,value:Jd(t),writable:!0})}:Rd);function Zd(e,t){for(var n=-1,r=e==null?0:e.length;++n-1}function rf(e,t,n){t==`__proto__`&&Yd?Yd(e,t,{configurable:!0,enumerable:!0,value:n,writable:!0}):e[t]=n}var af=Object.prototype.hasOwnProperty;function of(e,t,n){var r=e[t];(!(af.call(e,t)&&ms(r,n))||n===void 0&&!(t in e))&&rf(e,t,n)}function sf(e,t,n,r){var i=!n;n||={};for(var a=-1,o=t.length;++a0&&n(s)?t>1?Nf(s,t-1,n,r,i):Sc(i,s):r||(i[i.length]=s)}return i}function Pf(e){return e!=null&&e.length?Nf(e,1):[]}function Ff(e){return Xd(lf(e,void 0,Pf),e+``)}var If=dn(Object.getPrototypeOf,Object),Lf=`[object Object]`,Rf=Function.prototype,zf=Object.prototype,Bf=Rf.toString,Vf=zf.hasOwnProperty,Hf=Bf.call(Object);function Uf(e){if(!En(e)||hn(e)!=Lf)return!1;var t=If(e);if(t===null)return!0;var n=Vf.call(t,`constructor`)&&t.constructor;return typeof n==`function`&&n instanceof n&&Bf.call(n)==Hf}function Wf(e,t,n){var r=-1,i=e.length;t<0&&(t=-t>i?0:i+t),n=n>i?i:n,n<0&&(n+=i),i=t>n?0:n-t>>>0,t>>>=0;for(var a=Array(i);++r=t||n<0||d&&r>=a}function _(){var e=Km();if(g(e))return v(e);s=setTimeout(_,h(e))}function v(e){return s=void 0,f&&r?p(e):(r=i=void 0,o)}function y(){s!==void 0&&clearTimeout(s),l=0,r=c=i=s=void 0}function b(){return s===void 0?o:v(Km())}function x(){var e=Km(),n=g(e);if(r=arguments,i=this,c=e,n){if(s===void 0)return m(c);if(d)return clearTimeout(s),s=setTimeout(_,t),p(c)}return s===void 0&&(s=setTimeout(_,t)),o}return x.cancel=y,x.flush=b,x}function Zm(e){return En(e)&&yn(e)}function Qm(e,t,n){for(var r=-1,i=e==null?0:e.length;++r-1?i[a?t[o]:o]:void 0}}var th=Math.max;function nh(e,t,n){var r=e==null?0:e.length;if(!r)return-1;var i=n==null?0:Ld(n);return i<0&&(i=th(r+i,0)),Qd(e,Lm(t,3),i)}var rh=eh(nh);function ih(e){for(var t=-1,n=e==null?0:e.length,r={};++t=120&&u.length>=120)?new Zs(o&&u):void 0}u=e[0];var d=-1,f=s[0];outer:for(;++d1,t}),sf(e,tp(e),n),r&&(n=_m(n,hh|gh|_h,mh));for(var i=t.length;i--;)ph(n,t[i]);return n});function yh(e,t,n,r){if(!er(e))return e;t=Ef(t,e);for(var i=-1,a=t.length,o=a-1,s=e;s!=null&&++i=Th){var l=t?null:wh(e);if(l)return ac(l);o=!1,i=$s,c=new Zs}else c=t?[]:s;outer:for(;++r{let{antCls:n}=e,r=`${n}-${t}`,{inKeyframes:i,outKeyframes:a}=Ph[t];return[fr(r,i,a,e.motionDurationMid),{[` @@ -324,4 +324,4 @@ import{$ as e,A as t,Bt as n,C as r,Ct as i,D as a,E as o,F as s,G as c,H as l,H `]:{color:e.colorTextDisabled}}}}}},aq=e=>{let{componentCls:t,antCls:n,iconCls:r,fontSize:i,lineHeight:a}=e,o=`${t}-list-item`,s=`${o}-actions`,c=`${o}-action`,l=Math.round(i*a);return{[`${t}-wrapper`]:{[`${t}-list`]:G(G({},Ve()),{lineHeight:e.lineHeight,[o]:{position:`relative`,height:e.lineHeight*i,marginTop:e.marginXS,fontSize:i,display:`flex`,alignItems:`center`,transition:`background-color ${e.motionDurationSlow}`,"&:hover":{backgroundColor:e.controlItemBgHover},[`${o}-name`]:G(G({},tn),{padding:`0 ${e.paddingXS}px`,lineHeight:a,flex:`auto`,transition:`all ${e.motionDurationSlow}`}),[s]:{[c]:{opacity:0},[`${c}${n}-btn-sm`]:{height:l,border:0,lineHeight:1,"> span":{transform:`scale(1)`}},[` ${c}:focus, &.picture ${c} - `]:{opacity:1},[r]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${r}`]:{color:e.colorText}},[`${t}-icon ${r}`]:{color:e.colorTextDescription,fontSize:i},[`${o}-progress`]:{position:`absolute`,bottom:-e.uploadProgressOffset,width:`100%`,paddingInlineStart:i+e.paddingXS,fontSize:i,lineHeight:0,pointerEvents:`none`,"> div":{margin:0}}},[`${o}:hover ${c}`]:{opacity:1,color:e.colorText},[`${o}-error`]:{color:e.colorError,[`${o}-name, ${t}-icon ${r}`]:{color:e.colorError},[s]:{[`${r}, ${r}:hover`]:{color:e.colorError},[c]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:`table`,width:0,height:0,content:`""`}}})}}},oq=new Te(`uploadAnimateInlineIn`,{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),sq=new Te(`uploadAnimateInlineOut`,{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),cq=e=>{let{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:`forwards`},[`${n}-appear, ${n}-enter`]:{animationName:oq},[`${n}-leave`]:{animationName:sq}}},oq,sq]},lq=e=>{let{componentCls:t,iconCls:n,uploadThumbnailSize:r,uploadProgressOffset:i}=e,a=`${t}-list`,o=`${a}-item`;return{[`${t}-wrapper`]:{[`${a}${a}-picture, ${a}${a}-picture-card`]:{[o]:{position:`relative`,height:r+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:`transparent`},[`${o}-thumbnail`]:G(G({},tn),{width:r,height:r,lineHeight:`${r+e.paddingSM}px`,textAlign:`center`,flex:`none`,[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:`block`,width:`100%`,height:`100%`,overflow:`hidden`}}),[`${o}-progress`]:{bottom:i,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:r+e.paddingXS}},[`${o}-error`]:{borderColor:e.colorError,[`${o}-thumbnail ${n}`]:{"svg path[fill='#e6f7ff']":{fill:e.colorErrorBg},"svg path[fill='#1890ff']":{fill:e.colorError}}},[`${o}-uploading`]:{borderStyle:`dashed`,[`${o}-name`]:{marginBottom:i}}}}}},uq=e=>{let{componentCls:t,iconCls:n,fontSizeLG:r,colorTextLightSolid:i}=e,a=`${t}-list`,o=`${a}-item`,s=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:G(G({},Ve()),{display:`inline-block`,width:`100%`,[`${t}${t}-select`]:{width:s,height:s,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:`center`,verticalAlign:`top`,backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:`pointer`,transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:`flex`,alignItems:`center`,justifyContent:`center`,height:`100%`,textAlign:`center`},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${a}${a}-picture-card`]:{[`${a}-item-container`]:{display:`inline-block`,width:s,height:s,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:`top`},"&::after":{display:`none`},[o]:{height:`100%`,margin:0,"&::before":{position:`absolute`,zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:`" "`}},[`${o}:hover`]:{[`&::before, ${o}-actions`]:{opacity:1}},[`${o}-actions`]:{position:`absolute`,insetInlineStart:0,zIndex:10,width:`100%`,whiteSpace:`nowrap`,textAlign:`center`,opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:r,margin:`0 ${e.marginXXS}px`,fontSize:r,cursor:`pointer`,transition:`all ${e.motionDurationSlow}`}},[`${o}-actions, ${o}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new me(i).setAlpha(.65).toRgbString(),"&:hover":{color:i}}},[`${o}-thumbnail, ${o}-thumbnail img`]:{position:`static`,display:`block`,width:`100%`,height:`100%`,objectFit:`contain`},[`${o}-name`]:{display:`none`,textAlign:`center`},[`${o}-file + ${o}-name`]:{position:`absolute`,bottom:e.margin,display:`block`,width:`calc(100% - ${e.paddingXS*2}px)`},[`${o}-uploading`]:{[`&${o}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:`none`}},[`${o}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},dq=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:`rtl`}}},fq=e=>{let{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:G(G({},Ne(e)),{[t]:{outline:0,"input[type='file']":{cursor:`pointer`}},[`${t}-select`]:{display:`inline-block`},[`${t}-disabled`]:{color:n,cursor:`not-allowed`}})}},pq=Le(`Upload`,e=>{let{fontSizeHeading3:t,fontSize:n,lineHeight:r,lineWidth:i,controlHeightLG:a}=e,o=Math.round(n*r),s=Fe(e,{uploadThumbnailSize:t*2,uploadProgressOffset:o/2+i,uploadPicCardSize:a*2.55});return[fq(s),iq(s),lq(s),uq(s),aq(s),cq(s),dq(s),Kh(s)]}),mq=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},hq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);iu.value??p.value),[h,g]=Uu(e.defaultFileList||[],{value:y(e,`fileList`),postState:e=>{let t=Date.now();return(e??[]).map((e,n)=>(!e.uid&&!Object.isFrozen(e)&&(e.uid=`__AUTO__${t}_${n}__`),e))}}),_=W(`drop`),v=W(null);D(()=>{Zn(e.fileList!==void 0||r.value===void 0,`Upload`,"`value` is not a valid prop, do you mean `fileList`?"),Zn(e.transformFile===void 0,`Upload`,"`transformFile` is deprecated. Please use `beforeUpload` directly."),Zn(e.remove===void 0,`Upload`,"`remove` props is deprecated. Please use `remove` event.")});let b=(t,n,r)=>{var i,a;let s=[...n];e.maxCount===1?s=s.slice(-1):e.maxCount&&(s=s.slice(0,e.maxCount)),g(s);let c={file:t,fileList:s};r&&(c.event=r),(i=e[`onUpdate:fileList`])==null||i.call(e,c.fileList),(a=e.onChange)==null||a.call(e,c),o.onFieldChange()},x=(t,n)=>mq(this,void 0,void 0,function*(){let{beforeUpload:r,transformFile:i}=e,a=t;if(r){let e=yield r(t,n);if(e===!1)return!1;if(delete t[gq],e===gq)return Object.defineProperty(t,gq,{value:!0,configurable:!0}),!1;typeof e==`object`&&e&&(a=e)}return i&&(a=yield i(a)),a}),S=e=>{let t=e.filter(e=>!e.file[gq]);if(!t.length)return;let n=t.map(e=>HK(e.file)),r=[...h.value];n.forEach(e=>{r=UK(e,r)}),n.forEach((e,n)=>{let i=e;if(t[n].parsedFile)e.status=`uploading`;else{let{originFileObj:t}=e,n;try{n=new File([t],t.name,{type:t.type})}catch{n=new Blob([t],{type:t.type}),n.name=t.name,n.lastModifiedDate=new Date,n.lastModified=new Date().getTime()}n.uid=e.uid,i=n}b(i,r)})},C=(e,t,n)=>{try{typeof e==`string`&&(e=JSON.parse(e))}catch{}if(!WK(t,h.value))return;let r=HK(t);r.status=`done`,r.percent=100,r.response=e,r.xhr=n;let i=UK(r,h.value);b(r,i)},w=(e,t)=>{if(!WK(t,h.value))return;let n=HK(t);n.status=`uploading`,n.percent=e.percent;let r=UK(n,h.value);b(n,r,e)},T=(e,t,n)=>{if(!WK(n,h.value))return;let r=HK(n);r.error=e,r.response=t,r.status=`error`;let i=UK(r,h.value);b(r,i)},E=t=>{let n,r=e.onRemove||e.remove;Promise.resolve(typeof r==`function`?r(t):r).then(e=>{var r,i;if(e===!1)return;let a=GK(t,h.value);a&&(n=G(G({},t),{status:`removed`}),(r=h.value)==null||r.forEach(e=>{let t=n.uid===void 0?`name`:`uid`;e[t]===n[t]&&!Object.isFrozen(e)&&(e.status=`removed`)}),(i=v.value)==null||i.abort(n),b(n,a))})},O=t=>{var n;_.value=t.type,t.type===`drop`&&((n=e.onDrop)==null||n.call(e,t))};i({onBatchStart:S,onSuccess:C,onProgress:w,onError:T,fileList:h,upload:v});let[k]=Pt(`Upload`,Ut.Upload,a(()=>e.locale)),A=(t,r)=>{let{removeIcon:i,previewIcon:a,downloadIcon:o,previewFile:l,onPreview:u,onDownload:d,isImageUrl:f,progress:p,itemRender:g,iconRender:_,showUploadList:v}=e,{showDownloadIcon:y,showPreviewIcon:b,showRemoveIcon:x}=typeof v==`boolean`?{}:v;return v?s(rq,{prefixCls:c.value,listType:e.listType,items:h.value,previewFile:l,onPreview:u,onDownload:d,onRemove:E,showRemoveIcon:!m.value&&x,showPreviewIcon:b,showDownloadIcon:y,removeIcon:i,previewIcon:a,downloadIcon:o,iconRender:_,locale:k.value,isImageUrl:f,progress:p,itemRender:g,appendActionVisible:r,appendAction:t},G({},n)):t?.()};return()=>{let{listType:t,type:i}=e,{class:a,style:u}=r,p=hq(r,[`class`,`style`]),g=G(G(G({onBatchStart:S,onError:T,onProgress:w,onSuccess:C},p),e),{id:e.id??o.id.value,prefixCls:c.value,beforeUpload:x,onChange:void 0,disabled:m.value});delete g.remove,(!n.default||m.value)&&delete g.id;let y={[`${c.value}-rtl`]:l.value===`rtl`};if(i===`drag`){let e=Z(c.value,{[`${c.value}-drag`]:!0,[`${c.value}-drag-uploading`]:h.value.some(e=>e.status===`uploading`),[`${c.value}-drag-hover`]:_.value===`dragover`,[`${c.value}-disabled`]:m.value,[`${c.value}-rtl`]:l.value===`rtl`},r.class,f.value);return d(s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,y,a,f.value)}),[s(`div`,{class:e,onDrop:O,onDragover:O,onDragleave:O,style:r.style},[s(DK,X(X({},g),{},{ref:v,class:`${c.value}-btn`}),X({default:()=>[s(`div`,{class:`${c.value}-drag-container`},[n.default?.call(n)])]},n))]),A()]))}let b=Z(c.value,{[`${c.value}-select`]:!0,[`${c.value}-select-${t}`]:!0,[`${c.value}-disabled`]:m.value,[`${c.value}-rtl`]:l.value===`rtl`}),E=pe(n.default?.call(n)),D=e=>s(`div`,{class:b,style:e},[s(DK,X(X({},g),{},{ref:v}),n)]);return d(t===`picture-card`?s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,`${c.value}-picture-card-wrapper`,y,r.class,f.value)}),[A(D,!!(E&&E.length))]):s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,y,r.class,f.value)}),[D(E&&E.length?void 0:{display:`none`}),A()]))}}}),vq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{height:t}=e,i=vq(e,[`height`]),{style:a}=r,o=vq(r,[`style`]),c=G(G(G({},i),o),{type:`drag`,style:G(G({},a),{height:typeof t==`number`?`${t}px`:t})});return s(_q,c,n)}}}),bq=yq,xq=G(_q,{Dragger:yq,LIST_IGNORE:gq,install(e){return e.component(_q.name,_q),e.component(yq.name,yq),e}});function Sq(e){return e.replace(/([A-Z])/g,`-$1`).toLowerCase()}function Cq(e){return Object.keys(e).map(t=>`${Sq(t)}: ${e[t]};`).join(` `)}function wq(){return window.devicePixelRatio||1}function Tq(e,t,n,r){e.translate(t,n),e.rotate(Math.PI/180*Number(r)),e.translate(-t,-n)}var Eq=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(e=>e===t)),e.type===`attributes`&&e.target===t&&(n=!0),n},Dq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i2&&arguments[2]!==void 0?arguments[2]:{},{window:r=qx}=n,i=Dq(n,[`window`]),a,o=Gx(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=H(()=>Ux(e),e=>{s(),o.value&&r&&e&&(a=new MutationObserver(t),a.observe(e,i))},{immediate:!0}),l=()=>{s(),c()};return Vx(l),{isSupported:o,stop:l}}var kq=2,Aq=3,jq=d({name:`AWatermark`,inheritAttrs:!1,props:zn({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:$t([String,Array]),font:ut(),rootClassName:String,gap:vt(),offset:vt()},{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:r}=t,[,i]=Ct(),o=M(),c=M(),l=M(!1),u=a(()=>e.gap?.[0]??100),d=a(()=>e.gap?.[1]??100),f=a(()=>u.value/2),m=a(()=>d.value/2),h=a(()=>e.offset?.[0]??f.value),g=a(()=>e.offset?.[1]??m.value),_=a(()=>e.font?.fontSize??i.value.fontSizeLG),v=a(()=>e.font?.fontWeight??`normal`),y=a(()=>e.font?.fontStyle??`normal`),b=a(()=>e.font?.fontFamily??`sans-serif`),x=a(()=>e.font?.color??i.value.colorFill),S=a(()=>{let t={zIndex:e.zIndex??9,position:`absolute`,left:0,top:0,width:`100%`,height:`100%`,pointerEvents:`none`,backgroundRepeat:`repeat`},n=h.value-f.value,r=g.value-m.value;return n>0&&(t.left=`${n}px`,t.width=`calc(100% - ${n}px)`,n=0),r>0&&(t.top=`${r}px`,t.height=`calc(100% - ${r}px)`,r=0),t.backgroundPosition=`${n}px ${r}px`,t}),C=()=>{c.value&&=(c.value.remove(),void 0)},w=(e,t)=>{var n;o.value&&c.value&&(l.value=!0,c.value.setAttribute(`style`,Cq(G(G({},S.value),{backgroundImage:`url('${e}')`,backgroundSize:`${(u.value+t)*kq}px`}))),(n=o.value)==null||n.append(c.value),setTimeout(()=>{l.value=!1}))},T=t=>{let n=120,r=64,i=e.content,a=e.image,o=e.width,s=e.height;if(!a&&t.measureText){t.font=`${Number(_.value)}px ${b.value}`;let e=Array.isArray(i)?i:[i],a=e.map(e=>t.measureText(e).width);n=Math.ceil(Math.max(...a)),r=Number(_.value)*e.length+(e.length-1)*Aq}return[o??n,s??r]},E=(t,n,r,i,a)=>{let o=wq(),s=e.content,c=Number(_.value)*o;t.font=`${y.value} normal ${v.value} ${c}px/${a}px ${b.value}`,t.fillStyle=x.value,t.textAlign=`center`,t.textBaseline=`top`,t.translate(i/2,0),(Array.isArray(s)?s:[s])?.forEach((e,i)=>{t.fillText(e??``,n,r+i*(c+Aq*o))})},O=()=>{let t=document.createElement(`canvas`),n=t.getContext(`2d`),r=e.image,i=e.rotate??-22;if(n){c.value||=document.createElement(`div`);let e=wq(),[a,o]=T(n),s=(u.value+a)*e,l=(d.value+o)*e;t.setAttribute(`width`,`${s*kq}px`),t.setAttribute(`height`,`${l*kq}px`);let f=u.value*e/2,p=d.value*e/2,m=a*e,h=o*e,g=(m+u.value*e)/2,_=(h+d.value*e)/2,v=f+s,y=p+l,b=g+s,x=_+l;if(n.save(),Tq(n,g,_,i),r){let e=new Image;e.onload=()=>{n.drawImage(e,f,p,m,h),n.restore(),Tq(n,b,x,i),n.drawImage(e,v,y,m,h),w(t.toDataURL(),a)},e.crossOrigin=`anonymous`,e.referrerPolicy=`no-referrer`,e.src=r}else E(n,f,p,m,h),n.restore(),Tq(n,b,x,i),E(n,v,y,m,h),w(t.toDataURL(),a)}};return D(()=>{O()}),H(()=>[e,i.value.colorFill,i.value.fontSizeLG],()=>{O()},{deep:!0,flush:`post`}),p(()=>{C()}),Oq(o,e=>{l.value||e.forEach(e=>{Eq(e,c.value)&&(C(),O())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[`style`,`class`]}),()=>s(`div`,X(X({},r),{},{ref:o,class:[r.class,e.rootClassName],style:[{position:`relative`},r.style]}),[n.default?.call(n)])}}),Mq=be(jq);function Nq(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:`not-allowed`}}}function Pq(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}var Fq=G({overflow:`hidden`},tn),Iq=e=>{let{componentCls:t}=e;return{[t]:G(G(G(G(G({},Ne(e)),{display:`inline-block`,padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:`relative`,display:`flex`,alignItems:`stretch`,justifyItems:`flex-start`,width:`100%`},[`&${t}-rtl`]:{direction:`rtl`},[`&${t}-block`]:{display:`flex`},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:`relative`,textAlign:`center`,cursor:`pointer`,transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,"&-selected":G(G({},Pq(e)),{color:e.labelColorHover}),"&::after":{content:`""`,position:`absolute`,width:`100%`,height:`100%`,top:0,insetInlineStart:0,borderRadius:`inherit`,transition:`background-color ${e.motionDurationMid}`,pointerEvents:`none`},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,"&::after":{backgroundColor:e.bgColorHover}},"&-label":G({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},Fq),"&-icon + *":{marginInlineStart:e.marginSM/2},"&-input":{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:`none`}},[`${t}-thumb`]:G(G({},Pq(e)),{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:`100%`,padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:`transparent`}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),Nq(`&-disabled ${t}-item`,e)),Nq(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:`transform, width`}})}},Lq=Le(`Segmented`,e=>{let{lineWidthBold:t,lineWidth:n,colorTextLabel:r,colorText:i,colorFillSecondary:a,colorBgLayout:o,colorBgElevated:s}=e;return[Iq(Fe(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:r,labelColorHover:i,bgColor:o,bgColorHover:a,bgColorSelected:s}))]}),Rq=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,zq=e=>e===void 0?void 0:`${e}px`,Bq=d({props:{value:bt(),getValueIndex:bt(),prefixCls:bt(),motionName:bt(),onMotionStart:bt(),onMotionEnd:bt(),direction:bt(),containerRef:bt()},emits:[`motionStart`,`motionEnd`],setup(e,t){let{emit:n}=t,r=W(),i=t=>{let n=e.getValueIndex(t),r=e.containerRef.value?.querySelectorAll(`.${e.prefixCls}-item`)[n];return r?.offsetParent&&r},o=W(null),c=W(null);H(()=>e.value,(e,t)=>{let r=i(t),a=i(e),s=Rq(r),l=Rq(a);o.value=s,c.value=l,n(r&&a?`motionStart`:`motionEnd`)},{flush:`post`});let l=a(()=>e.direction===`rtl`?zq(-o.value?.right):zq(o.value?.left)),u=a(()=>e.direction===`rtl`?zq(-c.value?.right):zq(c.value?.left)),d,f=e=>{clearTimeout(d),x(()=>{e&&(e.style.transform=`translateX(var(--thumb-start-left))`,e.style.width=`var(--thumb-start-width)`)})},m=t=>{d=setTimeout(()=>{t&&(Zv(t,`${e.motionName}-appear-active`),t.style.transform=`translateX(var(--thumb-active-left))`,t.style.width=`var(--thumb-active-width)`)})},h=t=>{o.value=null,c.value=null,t&&(t.style.transform=null,t.style.width=null,Qv(t,`${e.motionName}-appear-active`)),n(`motionEnd`)},g=a(()=>({"--thumb-start-left":l.value,"--thumb-start-width":zq(o.value?.width),"--thumb-active-left":u.value,"--thumb-active-width":zq(c.value?.width)}));return p(()=>{clearTimeout(d)}),()=>{let t={ref:r,style:g.value,class:[`${e.prefixCls}-thumb`]};return s(Gt,{appear:!0,onBeforeEnter:f,onEnter:m,onAfterEnter:h},{default:()=>[!o.value||!c.value?null:s(`div`,t,null)]})}}});function Vq(e){return e.map(e=>typeof e==`object`&&e?e:{label:e?.toString(),title:e?.toString(),value:e})}var Hq=()=>({prefixCls:String,options:vt(),block:Y(),disabled:Y(),size:q(),value:G(G({},$t([String,Number])),{required:!0}),motionName:String,onChange:Q(),"onUpdate:value":Q()}),Uq=(e,t)=>{let{slots:n,emit:r}=t,{value:i,disabled:a,payload:o,title:c,prefixCls:l,label:u=n.label,checked:d,className:f}=e,p=e=>{a||r(`change`,e,i)};return s(`label`,{class:Z({[`${l}-item-disabled`]:a},f)},[s(`input`,{class:`${l}-item-input`,type:`radio`,disabled:a,checked:d,onChange:p},null),s(`div`,{class:`${l}-item-label`,title:typeof c==`string`?c:``},[typeof u==`function`?u({value:i,disabled:a,payload:o,title:c}):u??i])])};Uq.inheritAttrs=!1;var Wq=d({name:`ASegmented`,inheritAttrs:!1,props:zn(Hq(),{options:[],motionName:`thumb-motion`}),slots:Object,setup(e,t){let{emit:n,slots:r,attrs:i}=t,{prefixCls:o,direction:c,size:l}=K(`segmented`,e),[u,d]=Lq(o),f=M(),p=M(!1),m=a(()=>Vq(e.options)),h=(t,r)=>{e.disabled||(n(`update:value`,r),n(`change`,r))};return()=>{let t=o.value;return u(s(`div`,X(X({},i),{},{class:Z(t,{[d.value]:!0,[`${t}-block`]:e.block,[`${t}-disabled`]:e.disabled,[`${t}-lg`]:l.value==`large`,[`${t}-sm`]:l.value==`small`,[`${t}-rtl`]:c.value===`rtl`},i.class),ref:f}),[s(`div`,{class:`${t}-group`},[s(Bq,{containerRef:f,prefixCls:t,value:e.value,motionName:`${t}-${e.motionName}`,direction:c.value,getValueIndex:e=>m.value.findIndex(t=>t.value===e),onMotionStart:()=>{p.value=!0},onMotionEnd:()=>{p.value=!1}},null),m.value.map(n=>s(Uq,X(X({key:n.value,prefixCls:t,checked:n.value===e.value,onChange:h},n),{},{className:Z(n.className,`${t}-item`,{[`${t}-item-selected`]:n.value===e.value&&!p.value}),disabled:!!e.disabled||!!n.disabled}),r))])]))}}}),Gq=be(Wq),Kq=e=>{let{componentCls:t}=e;return{[t]:G(G({},Ne(e)),{display:`flex`,justifyContent:`center`,alignItems:`center`,padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:`relative`,width:`100%`,height:`100%`,overflow:`hidden`,[`& > ${t}-mask`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,zIndex:10,display:`flex`,flexDirection:`column`,justifyContent:`center`,alignItems:`center`,width:`100%`,height:`100%`,color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:`center`,[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},"&-icon":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:`transparent`}}},qq=Le(`QRCode`,e=>Kq(Fe(e,{QRCodeTextColor:`rgba(0, 0, 0, 0.88)`,QRCodeMaskBackgroundColor:`rgba(255, 255, 255, 0.96)`}))),Jq={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M924.8 385.6a446.7 446.7 0 00-96-142.4 446.7 446.7 0 00-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 00-142.4 96 446.7 446.7 0 00-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 01140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 00-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 000 79.2 55.95 55.95 0 0079.2 0 55.87 55.87 0 0014.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 00-11.3 0l-56.6 56.6a8.03 8.03 0 000 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 00-11.3 0l-31.1 31.1a8.03 8.03 0 000 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z`}}]},name:`dashboard`,theme:`outlined`};function Yq(e){for(var t=1;t({size:{type:Number,default:160},value:{type:String,required:!0},type:q(`canvas`),color:String,bgColor:String,includeMargin:Boolean,imageSettings:ut()}),hJ=()=>G(G({},mJ()),{errorLevel:q(`M`),icon:String,iconSize:{type:Number,default:40},status:q(`active`),bordered:{type:Boolean,default:!0}}),gJ;(function(e){class t{static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=o&&o<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=o;;u++){let n=t.getNumDataCodewords(u,r)*8,i=a.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.lengthm[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],et.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e>>9)*1335;let a=(t<<10|n)^21522;i(!(a>>>15));for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(!(t>>>18));for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;ne+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.lengtht.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(!(n>>>8)),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return!!(e>>>t&1)}function i(e){if(!e)throw Error(`Assertion error`)}class a{static makeBytes(e){let t=[];for(let r of e)n(r,8,t);return new a(a.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!a.isNumeric(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let r=0;r=1<1&&arguments[1]!==void 0?arguments[1]:0,n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function OJ(e,t){return e.slice().map((e,n)=>n=t.y+t.h?e:e.map((e,n)=>n=t.x+t.w?e:!1))}function kJ(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*EJ),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);d={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}return{x:l,y:u,h:c,w:s,excavation:d}}function AJ(e,t){return t==null?e?wJ:TJ:Math.floor(t)}var jJ=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),MJ=d({name:`QRCodeCanvas`,inheritAttrs:!1,props:G(G({},mJ()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:r}=t,i=a(()=>e.imageSettings?.src),o=M(null),c=M(null),l=M(!1);return r({toDataURL:(e,t)=>o.value?.toDataURL(e,t)}),P(()=>{let{value:t,size:n=yJ,level:r=bJ,bgColor:i=xJ,fgColor:a=SJ,includeMargin:s=CJ,marginSize:u,imageSettings:d}=e;if(o.value!=null){let e=o.value,f=e.getContext(`2d`);if(!f)return;let p=_J.QrCode.encodeText(t,vJ[r]).getModules(),m=AJ(s,u),h=p.length+m*2,g=kJ(p,n,m,d),_=c.value,v=l.value&&g!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;v&&g.excavation!=null&&(p=OJ(p,g.excavation));let y=window.devicePixelRatio||1;e.height=e.width=n*y;let b=n/h*y;f.scale(b,b),f.fillStyle=i,f.fillRect(0,0,h,h),f.fillStyle=a,jJ?f.fill(new Path2D(DJ(p,m))):p.forEach(function(e,t){e.forEach(function(e,n){e&&f.fillRect(n+m,t+m,1,1)})}),v&&f.drawImage(_,g.x+m,g.y+m,g.w,g.h)}},{flush:`post`}),H(i,()=>{l.value=!1}),()=>{let t=e.size??yJ,r={height:`${t}px`,width:`${t}px`},a=null;return i.value!=null&&(a=s(`img`,{src:i.value,key:i.value,style:{display:`none`},onLoad:()=>{l.value=!0},ref:c},null)),s(v,null,[s(`canvas`,X(X({},n),{},{style:[r,n.style],ref:o}),null),a])}}}),NJ=d({name:`QRCodeSVG`,inheritAttrs:!1,props:G(G({},mJ()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,r=null,i=null,a=null,o=null;return P(()=>{let{value:c,size:l=yJ,level:u=bJ,includeMargin:d=CJ,marginSize:f,imageSettings:p}=e;t=_J.QrCode.encodeText(c,vJ[u]).getModules(),n=AJ(d,f),r=t.length+n*2,i=kJ(t,l,n,p),p!=null&&i!=null&&(i.excavation!=null&&(t=OJ(t,i.excavation)),o=s(`image`,{"xlink:href":p.src,height:i.h,width:i.w,x:i.x+n,y:i.y+n,preserveAspectRatio:`none`},null)),a=DJ(t,n)}),()=>{let t=e.bgColor&&xJ,n=e.fgColor&&SJ;return s(`svg`,{height:e.size,width:e.size,viewBox:`0 0 ${r} ${r}`},[!!e.title&&s(`title`,null,[e.title]),s(`path`,{fill:t,d:`M0,0 h${r}v${r}H0z`,"shape-rendering":`crispEdges`},null),s(`path`,{fill:n,d:a,"shape-rendering":`crispEdges`},null),o])}}}),PJ=d({name:`AQrcode`,inheritAttrs:!1,props:hJ(),emits:[`refresh`],setup(e,t){let{emit:n,attrs:r,expose:i}=t,[o]=Pt(`QRCode`),{prefixCls:c}=K(`qrcode`,e),[l,u]=qq(c),[,d]=Ct(),f=W();i({toDataURL:(e,t)=>f.value?.toDataURL(e,t)});let p=a(()=>{let{value:t,icon:n=``,size:r=160,iconSize:i=40,color:a=d.value.colorText,bgColor:o=`transparent`,errorLevel:s=`M`}=e,c={src:n,x:void 0,y:void 0,height:i,width:i,excavate:!0};return{value:t,size:r-(d.value.paddingSM+d.value.lineWidth)*2,level:s,bgColor:o,fgColor:a,imageSettings:n?c:void 0}});return()=>{let t=c.value;return l(s(`div`,X(X({},r),{},{style:[r.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:p.value.bgColor}],class:[u.value,t,{[`${t}-borderless`]:!e.bordered}]}),[e.status!==`active`&&s(`div`,{class:`${t}-mask`},[e.status===`loading`&&s(bF,null,null),e.status===`expired`&&s(v,null,[s(`p`,{class:`${t}-expired`},[o.value.expired]),s(sr,{type:`link`,onClick:e=>n(`refresh`,e)},{default:()=>[o.value.refresh],icon:()=>s(gr,null,null)})]),e.status===`scanned`&&s(`p`,{class:`${t}-scanned`},[o.value.scanned])]),e.type===`canvas`?s(MJ,X({ref:f},p.value),null):s(NJ,p.value,null)]))}}}),FJ=be(PJ);function IJ(e){let t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:i,bottom:a,left:o}=e.getBoundingClientRect();return r>=0&&o>=0&&i<=t&&a<=n}function LJ(e,t,n,r){let[i,o]=Tn(void 0);P(()=>{let t=typeof e.value==`function`?e.value():e.value;o(t||null)},{flush:`post`});let[s,c]=Tn(null),l=()=>{if(!t.value){c(null);return}if(i.value){!IJ(i.value)&&t.value&&i.value.scrollIntoView(r.value);let{left:e,top:n,width:a,height:o}=i.value.getBoundingClientRect(),l={left:e,top:n,width:a,height:o,radius:0};JSON.stringify(s.value)!==JSON.stringify(l)&&c(l)}else c(null)};return D(()=>{H([t,i],()=>{l()},{flush:`post`,immediate:!0}),window.addEventListener(`resize`,l)}),p(()=>{window.removeEventListener(`resize`,l)}),[a(()=>{if(!s.value)return s.value;let e=n.value?.offset||6,t=n.value?.radius||2;return{left:s.value.left-e,top:s.value.top-e,width:s.value.width+e*2,height:s.value.height+e*2,radius:t}}),i]}var RJ=()=>({arrow:$t([Boolean,Object]),target:$t([String,Function,Object]),title:$t([String,Object]),description:$t([String,Object]),placement:q(),mask:$t([Object,Boolean],!0),className:{type:String},style:ut(),scrollIntoViewOptions:$t([Boolean,Object])}),zJ=()=>G(G({},RJ()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:Q(),onFinish:Q(),renderPanel:Q(),onPrev:Q(),onNext:Q()}),BJ=d({name:`DefaultPanel`,inheritAttrs:!1,props:zJ(),setup(e,t){let{attrs:n}=t;return()=>{let{prefixCls:t,current:r,total:i,title:a,description:o,onClose:c,onPrev:l,onNext:u,onFinish:d}=e;return s(`div`,X(X({},n),{},{class:Z(`${t}-content`,n.class)}),[s(`div`,{class:`${t}-inner`},[s(`button`,{type:`button`,onClick:c,"aria-label":`Close`,class:`${t}-close`},[s(`span`,{class:`${t}-close-x`},[g(`×`)])]),s(`div`,{class:`${t}-header`},[s(`div`,{class:`${t}-title`},[a])]),s(`div`,{class:`${t}-description`},[o]),s(`div`,{class:`${t}-footer`},[s(`div`,{class:`${t}-sliders`},[i>1?[...Array.from({length:i}).keys()].map((e,t)=>s(`span`,{key:e,class:t===r?`active`:``},null)):null]),s(`div`,{class:`${t}-buttons`},[r===0?null:s(`button`,{class:`${t}-prev-btn`,onClick:l},[g(`Prev`)]),r===i-1?s(`button`,{class:`${t}-finish-btn`,onClick:d},[g(`Finish`)]):s(`button`,{class:`${t}-next-btn`,onClick:u},[g(`Next`)])])])])])}}}),VJ=d({name:`TourStep`,inheritAttrs:!1,props:zJ(),setup(e,t){let{attrs:n}=t;return()=>{let{current:t,renderPanel:r}=e;return s(v,null,[typeof r==`function`?r(G(G({},n),e),t):s(BJ,X(X({},n),e),null)])}}}),HJ=0,UJ=de();function WJ(){let e;return UJ?(e=HJ,HJ+=1):e=`TEST_OR_SSR`,e}function GJ(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:W(``),t=`vc_unique_${WJ()}`;return e.value||t}var KJ={fill:`transparent`,"pointer-events":`auto`},qJ=d({name:`TourMask`,props:{prefixCls:{type:String},pos:ut(),rootClassName:{type:String},showMask:Y(),fill:{type:String,default:`rgba(0,0,0,0.5)`},open:Y(),animated:$t([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t,r=GJ();return()=>{let{prefixCls:t,open:i,rootClassName:a,pos:o,showMask:c,fill:l,animated:u,zIndex:d}=e,f=`${t}-mask-${r}`,p=typeof u==`object`?u?.placeholder:u;return s(bn,{visible:i,autoLock:!0},{default:()=>i&&s(`div`,X(X({},n),{},{class:Z(`${t}-mask`,a,n.class),style:[{position:`fixed`,left:0,right:0,top:0,bottom:0,zIndex:d,pointerEvents:`none`},n.style]}),[c?s(`svg`,{style:{width:`100%`,height:`100%`}},[s(`defs`,null,[s(`mask`,{id:f},[s(`rect`,{x:`0`,y:`0`,width:`100vw`,height:`100vh`,fill:`white`},null),o&&s(`rect`,{x:o.left,y:o.top,rx:o.radius,width:o.width,height:o.height,fill:`black`,class:p?`${t}-placeholder-animated`:``},null)])]),s(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:l,mask:`url(#${f})`},null),o&&s(v,null,[s(`rect`,X(X({},KJ),{},{x:`0`,y:`0`,width:`100%`,height:o.top}),null),s(`rect`,X(X({},KJ),{},{x:`0`,y:`0`,width:o.left,height:`100%`}),null),s(`rect`,X(X({},KJ),{},{x:`0`,y:o.top+o.height,width:`100%`,height:`calc(100vh - ${o.top+o.height}px)`}),null),s(`rect`,X(X({},KJ),{},{x:o.left+o.width,y:`0`,width:`calc(100vw - ${o.left+o.width}px)`,height:`100%`}),null)])]):null])})}}}),JJ=[0,0],YJ={left:{points:[`cr`,`cl`],offset:[-8,0]},right:{points:[`cl`,`cr`],offset:[8,0]},top:{points:[`bc`,`tc`],offset:[0,-8]},bottom:{points:[`tc`,`bc`],offset:[0,8]},topLeft:{points:[`bl`,`tl`],offset:[0,-8]},leftTop:{points:[`tr`,`tl`],offset:[-8,0]},topRight:{points:[`br`,`tr`],offset:[0,-8]},rightTop:{points:[`tl`,`tr`],offset:[8,0]},bottomRight:{points:[`tr`,`br`],offset:[0,8]},rightBottom:{points:[`bl`,`br`],offset:[8,0]},bottomLeft:{points:[`tl`,`bl`],offset:[0,8]},leftBottom:{points:[`br`,`bl`],offset:[-8,0]}};function XJ(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0],t={};return Object.keys(YJ).forEach(n=>{t[n]=G(G({},YJ[n]),{autoArrow:e,targetOffset:JJ})}),t}XJ();var ZJ=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{builtinPlacements:e,popupAlign:t}=Aa();return{builtinPlacements:e,popupAlign:t,steps:vt(),open:Y(),defaultCurrent:{type:Number},current:{type:Number},onChange:Q(),onClose:Q(),onFinish:Q(),mask:$t([Boolean,Object],!0),arrow:$t([Boolean,Object],!0),rootClassName:{type:String},placement:q(`bottom`),prefixCls:{type:String,default:`rc-tour`},renderPanel:Q(),gap:ut(),animated:$t([Boolean,Object]),scrollIntoViewOptions:$t([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},eY=d({name:`Tour`,inheritAttrs:!1,props:zn($J(),{}),setup(e){let{defaultCurrent:t,placement:n,mask:r,scrollIntoViewOptions:o,open:c,gap:l,arrow:u}=i(e),d=W(),[f,p]=Uu(0,{value:a(()=>e.current),defaultValue:t.value}),[m,h]=Uu(void 0,{value:a(()=>e.open),postState:t=>f.value<0||f.value>=e.steps.length?!1:t??!0}),g=M(m.value);P(()=>{m.value&&!g.value&&p(0),g.value=m.value});let _=a(()=>e.steps[f.value]||{}),y=a(()=>_.value.placement??n.value),b=a(()=>m.value&&(_.value.mask??r.value)),x=a(()=>_.value.scrollIntoViewOptions??o.value),[S,C]=LJ(a(()=>_.value.target),c,l,x),w=a(()=>C.value?_.value.arrow===void 0?u.value:_.value.arrow:!1),T=a(()=>typeof w.value==`object`&&w.value.pointAtCenter);H(T,()=>{var e;(e=d.value)==null||e.forcePopupAlign()}),H(f,()=>{var e;(e=d.value)==null||e.forcePopupAlign()});let E=t=>{var n;p(t),(n=e.onChange)==null||n.call(e,t)};return()=>{let{prefixCls:t,steps:n,onClose:r,onFinish:i,rootClassName:o,renderPanel:c,animated:l,zIndex:u}=e,p=ZJ(e,[`prefixCls`,`steps`,`onClose`,`onFinish`,`rootClassName`,`renderPanel`,`animated`,`zIndex`]);if(C.value===void 0)return null;let g=()=>{h(!1),r?.(f.value)},x=typeof b.value==`boolean`?b.value:!!b.value,D=typeof b.value==`boolean`?void 0:b.value,O=()=>C.value||document.body,k=()=>s(VJ,X({arrow:w.value,key:`content`,prefixCls:t,total:n.length,renderPanel:c,onPrev:()=>{E(f.value-1)},onNext:()=>{E(f.value+1)},onClose:g,current:f.value,onFinish:()=>{g(),i?.()}},_.value),null),A=a(()=>{let e=S.value||QJ,t={};return Object.keys(e).forEach(n=>{typeof e[n]==`number`?t[n]=`${e[n]}px`:t[n]=e[n]}),t});return m.value?s(v,null,[s(qJ,{zIndex:u,prefixCls:t,pos:S.value,showMask:x,style:D?.style,fill:D?.color,open:m.value,animated:l,rootClassName:o},null),s(al,X(X({},p),{},{arrow:!!p.arrow,builtinPlacements:_.value.target?p.builtinPlacements??XJ(T.value):void 0,ref:d,popupStyle:_.value.target?_.value.style:G(G({},_.value.style),{position:`fixed`,left:QJ.left,top:QJ.top,transform:`translate(-50%, -50%)`}),popupPlacement:y.value,popupVisible:m.value,popupClassName:Z(o,_.value.className),prefixCls:t,popup:k,forceRender:!1,destroyPopupOnHide:!0,zIndex:u,mask:!1,getTriggerDOMNode:O}),{default:()=>[s(bn,{visible:m.value,autoLock:!0},{default:()=>[s(`div`,{class:Z(o,`${t}-target-placeholder`),style:G(G({},A.value),{position:`fixed`,pointerEvents:`none`})},null)]})]})]):null}}}),tY=()=>G(G({},$J()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},"onUpdate:current":Function}),nY=d({name:`ATourPanel`,inheritAttrs:!1,props:G(G({},zJ()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),setup(e,t){let{attrs:n,slots:r}=t,{current:o,total:c}=i(e),l=a(()=>o.value===c.value-1),u=t=>{var n;let r=e.prevButtonProps;(n=e.onPrev)==null||n.call(e,t),typeof r?.onClick==`function`&&r?.onClick()},d=t=>{var n,r;let i=e.nextButtonProps;l.value?(n=e.onFinish)==null||n.call(e,t):(r=e.onNext)==null||r.call(e,t),typeof i?.onClick==`function`&&i?.onClick()};return()=>{let{prefixCls:t,title:i,onClose:a,cover:f,description:p,type:m,arrow:h}=e,g=e.prevButtonProps,_=e.nextButtonProps,v;i&&(v=s(`div`,{class:`${t}-header`},[s(`div`,{class:`${t}-title`},[i])]));let y;p&&(y=s(`div`,{class:`${t}-description`},[p]));let b;f&&(b=s(`div`,{class:`${t}-cover`},[f]));let x;x=r.indicatorsRender?r.indicatorsRender({current:o.value,total:c}):[...Array.from({length:c.value}).keys()].map((e,n)=>s(`span`,{key:e,class:Z(n===o.value&&`${t}-indicator-active`,`${t}-indicator`)},null));let S=m===`primary`?`default`:`primary`,C={type:`default`,ghost:m===`primary`};return s(ct,{componentName:`Tour`,defaultLocale:Ut.Tour},{default:e=>s(`div`,X(X({},n),{},{class:Z(m===`primary`?`${t}-primary`:``,n.class,`${t}-content`)}),[h&&s(`div`,{class:`${t}-arrow`,key:`arrow`},null),s(`div`,{class:`${t}-inner`},[s(_t,{class:`${t}-close`,onClick:a},null),b,v,y,s(`div`,{class:`${t}-footer`},[c.value>1&&s(`div`,{class:`${t}-indicators`},[x]),s(`div`,{class:`${t}-buttons`},[o.value===0?null:s(sr,X(X(X({},C),g),{},{onClick:u,size:`small`,class:Z(`${t}-prev-btn`,g?.className)}),{default:()=>[it(g?.children)?g.children():g?.children??e.Previous]}),s(sr,X(X({type:S},_),{},{onClick:d,size:`small`,class:Z(`${t}-next-btn`,_?.className)}),{default:()=>[it(_?.children)?_?.children():l.value?e.Finish:e.Next]})])])])])})}}}),rY=e=>{let{defaultType:t,steps:n,current:r,defaultCurrent:i}=e,o=W(i?.value),s=a(()=>r?.value);H(s,e=>{o.value=e??i?.value},{immediate:!0});let c=e=>{o.value=e},l=a(()=>typeof o.value==`number`?n&&n.value?.[o.value]?.type:t?.value);return{currentMergedType:a(()=>l.value??t?.value),updateInnerCurrent:c}},iY=e=>{let{componentCls:t,lineHeight:n,padding:r,paddingXS:i,borderRadius:a,borderRadiusXS:o,colorPrimary:s,colorText:c,colorFill:l,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:f,tourZIndexPopup:p,fontSize:m,colorBgContainer:h,fontWeightStrong:g,marginXS:_,colorTextLightSolid:v,tourBorderRadius:y,colorWhite:b,colorBgTextHover:x,tourCloseSize:S,motionDurationSlow:C,antCls:w}=e;return[{[t]:G(G({},Ne(e)),{color:c,position:`absolute`,zIndex:p,display:`block`,visibility:`visible`,fontSize:m,lineHeight:n,width:520,"--antd-arrow-background-color":h,"&-pure":{maxWidth:`100%`,position:`relative`},[`&${t}-hidden`]:{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-inner`]:{textAlign:`start`,textDecoration:`none`,borderRadius:y,boxShadow:f,position:`relative`,backgroundColor:h,border:`none`,backgroundClip:`padding-box`,[`${t}-close`]:{position:`absolute`,top:r,insetInlineEnd:r,color:e.colorIcon,outline:`none`,width:S,height:S,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:`flex`,alignItems:`center`,justifyContent:`center`,"&:hover":{color:e.colorIconHover,backgroundColor:e.wireframe?`transparent`:e.colorFillContent}},[`${t}-cover`]:{textAlign:`center`,padding:`${r+S+i}px ${r}px 0`,img:{width:`100%`}},[`${t}-header`]:{padding:`${r}px ${r}px ${i}px`,[`${t}-title`]:{lineHeight:n,fontSize:m,fontWeight:g}},[`${t}-description`]:{padding:`0 ${r}px`,lineHeight:n,wordWrap:`break-word`},[`${t}-footer`]:{padding:`${i}px ${r}px ${r}px`,textAlign:`end`,borderRadius:`0 0 ${o}px ${o}px`,display:`flex`,[`${t}-indicators`]:{display:`inline-block`,[`${t}-indicator`]:{width:d,height:u,display:`inline-block`,borderRadius:`50%`,background:l,"&:not(:last-child)":{marginInlineEnd:u},"&-active":{background:s}}},[`${t}-buttons`]:{marginInlineStart:`auto`,[`${w}-btn`]:{marginInlineStart:_}}}},[`${t}-primary, &${t}-primary`]:{"--antd-arrow-background-color":s,[`${t}-inner`]:{color:v,textAlign:`start`,textDecoration:`none`,backgroundColor:s,borderRadius:a,boxShadow:f,[`${t}-close`]:{color:v},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new me(v).setAlpha(.15).toRgbString(),"&-active":{background:v}}},[`${t}-prev-btn`]:{color:v,borderColor:new me(v).setAlpha(.15).toRgbString(),backgroundColor:s,"&:hover":{backgroundColor:new me(v).setAlpha(.15).toRgbString(),borderColor:`transparent`}},[`${t}-next-btn`]:{color:s,borderColor:`transparent`,background:b,"&:hover":{background:new me(x).onBackground(b).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${C}`}},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${t}-inner`]:{borderRadius:Math.min(y,8)}}},d_(e,{colorBg:`var(--antd-arrow-background-color)`,contentRadius:y,limitVerticalRadius:!0})]},aY=Le(`Tour`,e=>{let{borderRadiusLG:t,fontSize:n,lineHeight:r}=e;return[iY(Fe(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*r}))]}),oY=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{steps:t,current:i,type:c,rootClassName:l}=e,u=oY(e,[`steps`,`current`,`type`,`rootClassName`]),d=Z({[`${f.value}-primary`]:g.value===`primary`,[`${f.value}-rtl`]:p.value===`rtl`},h.value,l),v=(e,t)=>s(nY,X(X({},e),{},{type:c,current:t}),{indicatorsRender:o.indicatorsRender}),y=e=>{_(e),r(`update:current`,e),r(`change`,e)},b=a(()=>n_({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return m(s(eY,X(X(X({},n),u),{},{rootClassName:d,prefixCls:f.value,current:i,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:v,onChange:y,steps:t,builtinPlacements:b.value}),null))}}}),cY=be(sY),lY=Symbol(`appConfigContext`),uY=t=>e(lY,t),dY=()=>C(lY,{}),fY=Symbol(`appContext`),pY=t=>e(fY,t),mY=k({message:{},notification:{},modal:{}}),hY=()=>C(fY,mY),gY=e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a}}},_Y=Le(`App`,e=>[gY(e)]),vY=()=>({rootClassName:String,message:ut(),notification:ut()}),yY=()=>hY(),bY=d({name:`AApp`,props:zn(vY(),{}),setup(e,t){let{slots:n}=t,{prefixCls:r}=K(`app`,e),[i,o]=_Y(r),c=a(()=>Z(o.value,r.value,e.rootClassName)),l=dY(),u=a(()=>({message:G(G({},l.message),e.message),notification:G(G({},l.notification),e.notification)}));uY(u.value);let[d,f]=Nt(u.value.message),[p,m]=xt(u.value.notification),[h,g]=Xn();return pY(a(()=>({message:d,notification:p,modal:h})).value),()=>i(s(`div`,{class:c.value},[g(),f(),m(),n.default?.call(n)]))}});bY.useApp=yY,bY.install=function(e){e.component(bY.name,bY)};var xY=[`wrap`,`nowrap`,`wrap-reverse`],SY=[`flex-start`,`flex-end`,`start`,`end`,`center`,`space-between`,`space-around`,`space-evenly`,`stretch`,`normal`,`left`,`right`],CY=[`center`,`start`,`end`,`flex-start`,`flex-end`,`self-start`,`self-end`,`baseline`,`normal`,`stretch`],wY=(e,t)=>{let n={};return xY.forEach(r=>{n[`${e}-wrap-${r}`]=t.wrap===r}),n},TY=(e,t)=>{let n={};return CY.forEach(r=>{n[`${e}-align-${r}`]=t.align===r}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},EY=(e,t)=>{let n={};return SY.forEach(r=>{n[`${e}-justify-${r}`]=t.justify===r}),n};function DY(e,t){return Z(G(G(G({},wY(e,t)),TY(e,t)),EY(e,t)))}var OY=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`},"&:empty":{display:`none`}}}},kY=e=>{let{componentCls:t}=e;return{[t]:{"&-gap-small":{gap:e.flexGapSM},"&-gap-middle":{gap:e.flexGap},"&-gap-large":{gap:e.flexGapLG}}}},AY=e=>{let{componentCls:t}=e,n={};return xY.forEach(e=>{n[`${t}-wrap-${e}`]={flexWrap:e}}),n},jY=e=>{let{componentCls:t}=e,n={};return CY.forEach(e=>{n[`${t}-align-${e}`]={alignItems:e}}),n},MY=e=>{let{componentCls:t}=e,n={};return SY.forEach(e=>{n[`${t}-justify-${e}`]={justifyContent:e}}),n},NY=Le(`Flex`,e=>{let t=Fe(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[OY(t),kY(t),AY(t),jY(t),MY(t)]});function PY(e){return[`small`,`middle`,`large`].includes(e)}var FY=()=>({prefixCls:q(),vertical:Y(),wrap:q(),justify:q(),align:q(),flex:$t([Number,String]),gap:$t([Number,String]),component:bt()}),IY=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i[c.value,u.value,DY(c.value,e),{[`${c.value}-rtl`]:o.value===`rtl`,[`${c.value}-gap-${e.gap}`]:PY(e.gap),[`${c.value}-vertical`]:e.vertical??i?.value.vertical}]);return()=>{let{flex:t,gap:i,component:a=`div`}=e,o=IY(e,[`flex`,`gap`,`component`]),c={};return t&&(c.flex=t),i&&!PY(i)&&(c.gap=`${i}px`),l(s(a,X({class:[r.class,d.value],style:[r.style,c]},nr(o,[`justify`,`wrap`,`align`,`vertical`])),{default:()=>[n.default?.call(n)]}))}}}),RY=be(LY),zY=S({Affix:()=>Yi,Alert:()=>Ag,Anchor:()=>xa,AnchorLink:()=>ga,App:()=>bY,AutoComplete:()=>yg,AutoCompleteOptGroup:()=>_g,AutoCompleteOption:()=>gg,Avatar:()=>E_,AvatarGroup:()=>T_,BackTop:()=>hM,Badge:()=>G_,BadgeRibbon:()=>H_,Breadcrumb:()=>Dy,BreadcrumbItem:()=>gv,BreadcrumbSeparator:()=>Ey,Button:()=>sr,ButtonGroup:()=>Rn,Calendar:()=>nC,Card:()=>Mw,CardGrid:()=>jw,CardMeta:()=>Aw,Carousel:()=>ZT,Cascader:()=>nA,CheckableTag:()=>CA,Checkbox:()=>dA,CheckboxGroup:()=>uA,Col:()=>pA,Collapse:()=>Ww,CollapsePanel:()=>Uw,Comment:()=>_A,Compact:()=>Fn,ConfigProvider:()=>Wt,DatePicker:()=>aj,Descriptions:()=>yj,DescriptionsItem:()=>fj,DirectoryTree:()=>lU,Divider:()=>Cj,Drawer:()=>Uj,Dropdown:()=>wj,DropdownButton:()=>uv,Empty:()=>fe,Flex:()=>RY,FloatButton:()=>gM,FloatButtonGroup:()=>uM,Form:()=>Wk,FormItem:()=>Fk,FormItemRest:()=>fd,Grid:()=>fA,Image:()=>iP,ImagePreviewGroup:()=>rP,Input:()=>dN,InputGroup:()=>NM,InputNumber:()=>LP,InputPassword:()=>uN,InputSearch:()=>FM,Layout:()=>sF,LayoutContent:()=>oF,LayoutFooter:()=>iF,LayoutHeader:()=>rF,LayoutSider:()=>aF,List:()=>aI,ListItem:()=>eI,ListItemMeta:()=>ZF,LocaleProvider:()=>Vt,Mentions:()=>LI,MentionsOption:()=>II,Menu:()=>vy,MenuDivider:()=>ty,MenuItem:()=>Bv,MenuItemGroup:()=>ey,Modal:()=>ar,MonthPicker:()=>ej,PageHeader:()=>oL,Pagination:()=>XF,Popconfirm:()=>dL,Popover:()=>w_,Progress:()=>KL,QRCode:()=>FJ,QuarterPicker:()=>rj,Radio:()=>xS,RadioButton:()=>bS,RadioGroup:()=>yS,RangePicker:()=>ij,Rate:()=>sR,Result:()=>ER,Row:()=>DR,Segmented:()=>Gq,Select:()=>lg,SelectOptGroup:()=>dg,SelectOption:()=>ug,Skeleton:()=>Dw,SkeletonAvatar:()=>Ew,SkeletonButton:()=>Sw,SkeletonImage:()=>Tw,SkeletonInput:()=>Cw,SkeletonTitle:()=>QC,Slider:()=>cz,Space:()=>nL,Spin:()=>bF,Statistic:()=>YI,StatisticCountdown:()=>JI,Step:()=>jz,Steps:()=>Mz,SubMenu:()=>Yv,Switch:()=>Vz,TabPane:()=>BC,Table:()=>rW,TableColumn:()=>QU,TableColumnGroup:()=>$U,TableSummary:()=>nW,TableSummaryCell:()=>tW,TableSummaryRow:()=>eW,Tabs:()=>HC,Tag:()=>wA,Textarea:()=>QM,TimePicker:()=>hG,TimeRangePicker:()=>mG,Timeline:()=>bG,TimelineItem:()=>gG,Tooltip:()=>v_,Tour:()=>cY,Transfer:()=>OW,Tree:()=>dU,TreeNode:()=>uU,TreeSelect:()=>uG,TreeSelectNode:()=>lG,Typography:()=>fK,TypographyLink:()=>rK,TypographyParagraph:()=>aK,TypographyText:()=>sK,TypographyTitle:()=>dK,Upload:()=>xq,UploadDragger:()=>bq,Watermark:()=>Mq,WeekPicker:()=>$A,message:()=>ot,notification:()=>Rt}),BY={version:Ze,install:function(e){return Object.keys(zY).forEach(t=>{let n=zY[t];n.install&&e.use(n)}),e.use(zi.StyleProvider),e.config.globalProperties.$message=ot,e.config.globalProperties.$notification=Rt,e.config.globalProperties.$info=ar.info,e.config.globalProperties.$success=ar.success,e.config.globalProperties.$error=ar.error,e.config.globalProperties.$warning=ar.warning,e.config.globalProperties.$confirm=ar.confirm,e.config.globalProperties.$destroyAll=ar.destroyAll,e}},VY={};function HY(e,t){let n=U(`router-view`);return _(),R(n)}var UY=ne(VY,[[`render`,HY]]),WY=typeof document<`u`,GY=/#/g,KY=/&/g,qY=/\//g,JY=/=/g,YY=/\?/g,XY=/\+/g,ZY=/%5B/g,QY=/%5D/g,$Y=/%5E/g,eX=/%60/g,tX=/%7B/g,nX=/%7C/g,rX=/%7D/g,iX=/%20/g;function aX(e){return e==null?``:encodeURI(``+e).replace(nX,`|`).replace(ZY,`[`).replace(QY,`]`)}function oX(e){return aX(e).replace(tX,`{`).replace(rX,`}`).replace($Y,`^`)}function sX(e){return aX(e).replace(XY,`%2B`).replace(iX,`+`).replace(GY,`%23`).replace(KY,`%26`).replace(eX,"`").replace(tX,`{`).replace(rX,`}`).replace($Y,`^`)}function cX(e){return sX(e).replace(JY,`%3D`)}function lX(e){return aX(e).replace(GY,`%23`).replace(YY,`%3F`)}function uX(e){return lX(e).replace(qY,`%2F`)}function dX(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var fX=/\/$/,pX=e=>e.replace(fX,``);function mX(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=SX(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:dX(o)}}function hX(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function gX(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function _X(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&vX(t.matched[r],n.matched[i])&&yX(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function vX(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function yX(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!bX(e[n],t[n]))return!1;return!0}function bX(e,t){return Mr(e)?xX(e,t):Mr(t)?xX(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function xX(e,t){return Mr(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function SX(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var CX={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function wX(e){if(!e){if(WY){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),pX(e)}var TX=/^[^#]+#/;function EX(e,t){return e.replace(TX,`#`)+t}function DX(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var OX=()=>({left:window.scrollX,top:window.scrollY});function kX(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=DX(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function AX(e,t){return(history.state?history.state.position-t:-1)+e}var jX=new Map;function MX(e,t){jX.set(e,t)}function NX(e){let t=jX.get(e);return jX.delete(e),t}function PX(e){return typeof e==`string`||e&&typeof e==`object`}function FX(e){return typeof e==`string`||typeof e==`symbol`}function IX(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&sX(e)):[r&&sX(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function RX(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Mr(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function zX(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function BX(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(Rr(4,{from:n,to:t})):e instanceof Error?c(e):PX(e)?c(Rr(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function VX(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e])){if(zr(s)){let c=(s.__vccOpts||s)[t];c&&a.push(BX(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Er(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&BX(c,n,r,o,e,i)()}))}}}return a}function HX(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;ovX(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>vX(e,s))||i.push(s))}return[n,r,i]}var UX=()=>location.protocol+`//`+location.host;function WX(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),gX(n,``)}return gX(n,e)+r+i}function GX(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=WX(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(Fr({},e.state,{scroll:OX()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function KX(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?OX():null}}function qX(e){let{history:t,location:n}=window,r={value:WX(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:UX()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,Fr({},t.state,KX(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=Fr({},i.value,t.state,{forward:e,scroll:OX()});a(o.current,o,!0),a(e,Fr({},KX(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function JX(e){e=wX(e);let t=qX(e),n=GX(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=Fr({location:``,base:e,go:r,createHref:EX.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var YX={type:0,value:``},XX=/[a-zA-Z0-9_]/;function ZX(e){if(!e)return[[]];if(e===`/`)return[[YX]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function rZ(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var aZ={strict:!1,end:!0,sensitive:!1};function oZ(e,t,n){let r=tZ(ZX(e.path),n),i=Fr(r,{record:e,parent:t,children:[],alias:[]});return t&&!i.record.aliasOf==!t.record.aliasOf&&t.children.push(i),i}function sZ(e,t){let n=[],r=new Map;t=Nr(aZ,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=lZ(e);s.aliasOf=r&&r.record;let l=Nr(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(lZ(Fr({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=oZ(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!dZ(d)&&o(e.name)),hZ(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:Vr}function o(e){if(FX(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=pZ(e,n);n.splice(t,0,e),e.record.name&&!dZ(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw Rr(1,{location:e});s=i.record.name,a=Fr(cZ(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&cZ(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw Rr(1,{location:e,currentLocation:t});s=i.record.name,a=Fr({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:fZ(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function cZ(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function lZ(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:uZ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function uZ(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function dZ(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function fZ(e){return e.reduce((e,t)=>Fr(e,t.meta),{})}function pZ(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;rZ(e,t[i])<0?r=i:n=i+1}let i=mZ(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function mZ(e){let t=e;for(;t=t.parent;)if(hZ(t)&&rZ(e,t)===0)return t}function hZ({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function gZ(e){let t=C(kr),n=C(Or),r=a(()=>{let n=b(e.to);return t.resolve(n)}),i=a(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(vX.bind(null,i));if(o>-1)return o;let s=xZ(e[t-2]);return t>1&&xZ(i)===s&&a[a.length-1].path!==s?a.findIndex(vX.bind(null,e[t-2])):o}),o=a(()=>i.value>-1&&bZ(n.params,r.value.params)),s=a(()=>i.value>-1&&i.value===n.matched.length-1&&yX(n.params,r.value.params));function c(n={}){if(yZ(n)){let n=t[b(e.replace)?`replace`:`push`](b(e.to)).catch(Vr);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:a(()=>r.value.href),isActive:o,isExactActive:s,navigate:c}}function _Z(e){return e.length===1?e[0]:e}var vZ=d({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:gZ,setup(e,{slots:t}){let n=k(gZ(e)),{options:r}=C(kr),i=a(()=>({[SZ(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[SZ(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&_Z(t.default(n));return e.custom?r:le(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function yZ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function bZ(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!Mr(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function xZ(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var SZ=(e,t,n)=>e??t??n,CZ=d({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(t,{attrs:n,slots:r}){let i=C(Lr),o=a(()=>t.route||i.value),s=C(Ar,0),c=a(()=>{let e=b(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),l=a(()=>o.value.matched[c.value]);e(Ar,a(()=>c.value+1)),e(Dr,l),e(Lr,o);let u=W();return H(()=>[u.value,l.value,t.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!vX(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=o.value,i=t.name,a=l.value,s=a&&a.components[i];if(!s)return wZ(r.default,{Component:s,route:e});let c=a.props[i],d=c?c===!0?e.params:typeof c==`function`?c(e):c:null,f=le(s,Fr({},d,n,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:u}));return wZ(r.default,{Component:f,route:e})||f}}});function wZ(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var TZ=CZ;function EZ(e){let t=sZ(e.routes,e),n=e.parseQuery||IX,r=e.stringifyQuery||LX,i=e.history,a=zX(),o=zX(),s=zX(),c=M(CX),l=CX;WY&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let u=Br.bind(null,e=>``+e),d=Br.bind(null,uX),f=Br.bind(null,dX);function p(e,n){let r,i;return FX(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function m(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function h(){return t.getRoutes().map(e=>e.record)}function g(e){return!!t.getRecordMatcher(e)}function _(e,a){if(a=Fr({},a||c.value),typeof e==`string`){let r=mX(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return Fr(r,o,{params:f(o.params),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=Fr({},e,{path:mX(n,e.path,a.path).path});else{let t=Fr({},e.params);for(let e in t)t[e]??delete t[e];o=Fr({},e,{params:d(t)}),a.params=d(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=u(f(s.params));let p=hX(r,Fr({},e,{hash:oX(l),path:s.path})),m=i.createHref(p);return Fr({fullPath:p,hash:l,query:r===LX?RX(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function v(e){return typeof e==`string`?mX(n,e,c.value.path):Fr({},e)}function y(e,t){if(l!==e)return Rr(8,{from:t,to:e})}function S(e){return T(e)}function C(e){return S(Fr(v(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=v(i):{path:i},i.params={}),Fr({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=w(n,i);if(u)return T(Fr(v(u),{state:typeof u==`object`?Fr({},a,u.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&_X(r,i,n)&&(f=Rr(16,{to:d,from:i}),z(i,i,!0,!1)),(f?Promise.resolve(f):O(d,i)).catch(e=>Ir(e)?Ir(e,2)?e:R(e):L(e,d,i)).then(e=>{if(e){if(Ir(e,2))return T(Fr({replace:s},v(e.to),{state:typeof e.to==`object`?Fr({},a,e.to.state):a,force:o}),t||d)}else e=A(d,i,!0,s,a);return k(d,i,e),e})}function E(e,t){let n=y(e,t);return n?Promise.reject(n):Promise.resolve()}function D(e){let t=V.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function O(e,t){let n,[r,i,s]=HX(e,t);n=VX(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(BX(r,e,t))});let c=E.bind(null,e,t);return n.push(c),re(n).then(()=>{n=[];for(let r of a.list())n.push(BX(r,e,t));return n.push(c),re(n)}).then(()=>{n=VX(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(BX(r,e,t))});return n.push(c),re(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(Mr(r.beforeEnter))for(let i of r.beforeEnter)n.push(BX(i,e,t));else n.push(BX(r.beforeEnter,e,t))}return n.push(c),re(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=VX(s,`beforeRouteEnter`,e,t,D),n.push(c),re(n))).then(()=>{n=[];for(let r of o.list())n.push(BX(r,e,t));return n.push(c),re(n)}).catch(e=>Ir(e,8)?e:Promise.reject(e))}function k(e,t,n){s.list().forEach(r=>D(()=>r(e,t,n)))}function A(e,t,n,r,a){let o=y(e,t);if(o)return o;let s=t===CX,l=WY?history.state:{};n&&(r||s?i.replace(e.fullPath,Fr({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,z(e,t,n,s),R()}let j;function N(){j||=i.listen((e,t,n)=>{if(!ne.listening)return;let r=_(e),a=w(r,ne.currentRoute.value);if(a){T(Fr(a,{replace:!0,force:!0}),r).catch(Vr);return}l=r;let o=c.value;WY&&MX(AX(o.fullPath,n.delta),OX()),O(r,o).catch(e=>Ir(e,12)?e:Ir(e,2)?(T(Fr(v(e.to),{force:!0}),r).then(e=>{Ir(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(Vr),Promise.reject()):(n.delta&&i.go(-n.delta,!1),L(e,r,o))).then(e=>{e||=A(r,o,!1),e&&(n.delta&&!Ir(e,8)?i.go(-n.delta,!1):n.type===`pop`&&Ir(e,20)&&i.go(-1,!1)),k(r,o,e)}).catch(Vr)})}let P=zX(),F=zX(),I;function L(e,t,n){R(e);let r=F.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ee(){return I&&c.value!==CX?Promise.resolve():new Promise((e,t)=>{P.add([e,t])})}function R(e){return I||(I=!e,N(),P.list().forEach(([t,n])=>e?n(e):t()),P.reset()),e}function z(t,n,r,i){let{scrollBehavior:a}=e;if(!WY||!a)return Promise.resolve();let o=!r&&NX(AX(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return x().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&kX(e)).catch(e=>t===c.value&&L(e,t,n))}let B=e=>i.go(e),te,V=new Set,ne={currentRoute:c,listening:!0,addRoute:p,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:h,resolve:_,options:e,push:S,replace:C,go:B,back:()=>B(-1),forward:()=>B(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:F.add,isReady:ee,install(e){e.component(`RouterLink`,vZ),e.component(`RouterView`,TZ),e.config.globalProperties.$router=ne,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>b(c)}),WY&&!te&&c.value===CX&&(te=!0,S(i.location).catch(e=>{}));let t={};for(let e in CX)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(kr,ne),e.provide(Or,ce(t)),e.provide(Lr,c);let n=e.unmount;V.add(e),e.unmount=function(){V.delete(e),V.size<1&&(l=CX,j&&j(),j=null,c.value=CX,te=!1,I=!1),n()}}};function re(e){return e.reduce((e,t)=>e.then(()=>D(t)),Promise.resolve())}return ne}var DZ={key:0,class:`brand-copy`},OZ={key:0},kZ={class:`topbar-title`},AZ={class:`user-button`},jZ={class:`avatar`},MZ={class:`user-copy`},NZ=ne(d({__name:`AppLayout`,setup(e){let r=W(!1),i=W(!1),o=Pr(),c=jr(),l=an(),u=a(()=>o.path.startsWith(`/scenarios`)||o.path.startsWith(`/sops`)?[`scenarios`]:o.path.startsWith(`/execute`)?[`execute`]:o.path.startsWith(`/runs`)?[`runs`]:o.path.startsWith(`/members`)?[`members`]:[`dashboard`]),d={dashboard:`工作台`,scenarios:`场景与 SOP`,execute:`执行话术`,runs:`执行记录`,members:`企业成员`},f=a(()=>d[u.value[0]]||`销冠 SOP`),p=a(()=>({admin:`企业管理员`,editor:`SOP 编辑者`,operator:`一线执行者`})[l.user?.role_code||``]||l.user?.role_code||``);D(()=>l.loadUser().catch(()=>l.logout()));function m({key:e}){i.value=!1,c.push({dashboard:`/`,scenarios:`/scenarios`,execute:`/execute`,runs:`/runs`,members:`/members`}[e])}function v(){l.logout(),c.push(`/login`)}return(e,a)=>{let o=U(`a-menu-item`),c=U(`a-menu`),d=U(`a-layout-sider`),y=U(`a-button`),x=U(`a-dropdown`),S=U(`a-layout-header`),C=U(`router-view`),w=U(`a-layout-content`),T=U(`a-layout`),E=U(`a-drawer`);return _(),R(T,{class:`app-frame`},{default:z(()=>[s(d,{collapsed:r.value,"onUpdate:collapsed":a[0]||=e=>r.value=e,trigger:null,collapsible:``,width:224,class:`side-panel`},{default:z(()=>[h(`div`,{class:ue([`brand`,{compact:r.value}])},[a[5]||=h(`div`,{class:`brand-mark`},[h(`span`),h(`span`),h(`span`)],-1),r.value?t(``,!0):(_(),ee(`div`,DZ,[...a[4]||=[h(`strong`,null,`销冠 SOP`,-1),h(`small`,null,`经验执行系统`,-1)]]))],2),s(c,{mode:`inline`,theme:`dark`,"selected-keys":u.value,onClick:m},{default:z(()=>[s(o,{key:`dashboard`},{default:z(()=>[s(b(Zq)),a[6]||=h(`span`,null,`工作台`,-1)]),_:1}),b(l).can(`scenario.view`)?(_(),R(o,{key:`scenarios`},{default:z(()=>[s(b(br)),a[7]||=h(`span`,null,`场景与 SOP`,-1)]),_:1})):t(``,!0),b(l).can(`sop.execute`)?(_(),R(o,{key:`execute`},{default:z(()=>[s(b(wr)),a[8]||=h(`span`,null,`执行话术`,-1)]),_:1})):t(``,!0),b(l).can(`runs.view_all`)||b(l).can(`runs.view_own`)?(_(),R(o,{key:`runs`},{default:z(()=>[s(b(tJ)),a[9]||=h(`span`,null,`执行记录`,-1)]),_:1})):t(``,!0),b(l).can(`member.manage`)?(_(),R(o,{key:`members`},{default:z(()=>[s(b(Tr)),a[10]||=h(`span`,null,`企业成员`,-1)]),_:1})):t(``,!0)]),_:1},8,[`selected-keys`]),h(`div`,{class:ue([`sider-foot`,{compact:r.value}])},[a[11]||=h(`span`,{class:`online-dot`},null,-1),r.value?t(``,!0):(_(),ee(`span`,OZ,`服务运行正常`))],2)]),_:1},8,[`collapsed`]),s(T,null,{default:z(()=>[s(S,{class:`topbar`},{default:z(()=>[s(y,{type:`text`,class:`collapse-button desktop-nav-toggle`,"aria-label":r.value?`展开导航`:`收起导航`,onClick:a[1]||=e=>r.value=!r.value},{default:z(()=>[r.value?(_(),R(b(pJ),{key:0})):(_(),R(b(lJ),{key:1}))]),_:1},8,[`aria-label`]),s(y,{type:`text`,class:`collapse-button mobile-nav-toggle`,"aria-label":`打开导航`,onClick:a[2]||=e=>i.value=!0},{default:z(()=>[s(b(pJ))]),_:1}),h(`div`,kZ,n(f.value),1),s(x,{placement:`bottomRight`},{overlay:z(()=>[s(c,null,{default:z(()=>[s(o,{key:`logout`,onClick:v},{default:z(()=>[s(b(aJ)),a[12]||=g(` 退出登录`,-1)]),_:1})]),_:1})]),default:z(()=>[h(`button`,AZ,[h(`span`,jZ,n((b(l).user?.display_name||`管`).slice(0,1)),1),h(`span`,MZ,[h(`strong`,null,n(b(l).user?.display_name||`平台管理员`),1),h(`small`,null,n(p.value),1)])])]),_:1})]),_:1}),s(w,{class:`content-area`},{default:z(()=>[s(C)]),_:1})]),_:1}),s(E,{open:i.value,"onUpdate:open":a[3]||=e=>i.value=e,placement:`left`,width:280,closable:!1,class:`mobile-nav-drawer`},{default:z(()=>[a[18]||=h(`div`,{class:`mobile-brand`},[h(`div`,{class:`brand-mark`},[h(`span`),h(`span`),h(`span`)]),h(`div`,{class:`brand-copy`},[h(`strong`,null,`销冠 SOP`),h(`small`,null,`经验执行系统`)])],-1),s(c,{mode:`inline`,theme:`dark`,"selected-keys":u.value,onClick:m},{default:z(()=>[s(o,{key:`dashboard`},{default:z(()=>[s(b(Zq)),a[13]||=h(`span`,null,`工作台`,-1)]),_:1}),b(l).can(`scenario.view`)?(_(),R(o,{key:`scenarios`},{default:z(()=>[s(b(br)),a[14]||=h(`span`,null,`场景与 SOP`,-1)]),_:1})):t(``,!0),b(l).can(`sop.execute`)?(_(),R(o,{key:`execute`},{default:z(()=>[s(b(wr)),a[15]||=h(`span`,null,`执行话术`,-1)]),_:1})):t(``,!0),b(l).can(`runs.view_all`)||b(l).can(`runs.view_own`)?(_(),R(o,{key:`runs`},{default:z(()=>[s(b(tJ)),a[16]||=h(`span`,null,`执行记录`,-1)]),_:1})):t(``,!0),b(l).can(`member.manage`)?(_(),R(o,{key:`members`},{default:z(()=>[s(b(Tr)),a[17]||=h(`span`,null,`企业成员`,-1)]),_:1})):t(``,!0)]),_:1},8,[`selected-keys`])]),_:1},8,[`open`])]),_:1})}}}),[[`__scopeId`,`data-v-9d064ef8`]]),PZ=`modulepreload`,FZ=function(e){return`/`+e},IZ={},LZ=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=FZ(t,n),t=s(t),t in IZ)return;IZ[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:PZ,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},RZ=EZ({history:JX(),routes:[{path:`/login`,component:()=>LZ(()=>import(`./LoginView-DMG0bZF-.js`),__vite__mapDeps([0,1,2,3,4,5])),meta:{public:!0}},{path:`/`,component:NZ,children:[{path:``,name:`dashboard`,component:()=>LZ(()=>import(`./DashboardView-Vhr2bwL8.js`),__vite__mapDeps([6,1,3,7,8,9,4,10]))},{path:`scenarios`,name:`scenarios`,component:()=>LZ(()=>import(`./ScenariosView-BYT1rTBj.js`),__vite__mapDeps([11,1,2,3,12,7,4,13]))},{path:`scenarios/:id`,name:`scenario-detail`,component:()=>LZ(()=>import(`./ScenarioDetailView-svKKSu2G.js`),__vite__mapDeps([14,1,2,3,15,7,16,17,18,19,4,20]))},{path:`sops/:id`,name:`sop-editor`,component:()=>LZ(()=>import(`./SOPEditorView-CNOWYqSp.js`),__vite__mapDeps([21,1,2,3,15,7,16,17,19,4,22]))},{path:`execute`,name:`execute`,component:()=>LZ(()=>import(`./ExecuteView-CAUSQPH9.js`),__vite__mapDeps([23,1,2,15,24,9,25,4,26]))},{path:`runs`,name:`runs`,component:()=>LZ(()=>import(`./RunHistoryView-Dh9SlbUl.js`),__vite__mapDeps([27,1,2,3,28,9,4,29]))},{path:`runs/:id`,name:`run-detail`,component:()=>LZ(()=>import(`./RunDetailView-BFxue3EE.js`),__vite__mapDeps([30,1,2,3,16,25,4,31]))},{path:`members`,name:`members`,component:()=>LZ(()=>import(`./MembersView-CJIp3zFH.js`),__vite__mapDeps([32,1,2,3,7,18,33,34]))}]}]});RZ.beforeEach(e=>{if(!e.meta.public&&!localStorage.getItem(`access_token`))return`/login`;if(e.path===`/login`&&localStorage.getItem(`access_token`))return`/`}),zt(UY).use(rn()).use(RZ).use(BY).mount(`#app`); \ No newline at end of file + `]:{opacity:1},[r]:{color:e.colorTextDescription,transition:`all ${e.motionDurationSlow}`},[`&:hover ${r}`]:{color:e.colorText}},[`${t}-icon ${r}`]:{color:e.colorTextDescription,fontSize:i},[`${o}-progress`]:{position:`absolute`,bottom:-e.uploadProgressOffset,width:`100%`,paddingInlineStart:i+e.paddingXS,fontSize:i,lineHeight:0,pointerEvents:`none`,"> div":{margin:0}}},[`${o}:hover ${c}`]:{opacity:1,color:e.colorText},[`${o}-error`]:{color:e.colorError,[`${o}-name, ${t}-icon ${r}`]:{color:e.colorError},[s]:{[`${r}, ${r}:hover`]:{color:e.colorError},[c]:{opacity:1}}},[`${t}-list-item-container`]:{transition:`opacity ${e.motionDurationSlow}, height ${e.motionDurationSlow}`,"&::before":{display:`table`,width:0,height:0,content:`""`}}})}}},oq=new Te(`uploadAnimateInlineIn`,{from:{width:0,height:0,margin:0,padding:0,opacity:0}}),sq=new Te(`uploadAnimateInlineOut`,{to:{width:0,height:0,margin:0,padding:0,opacity:0}}),cq=e=>{let{componentCls:t}=e,n=`${t}-animate-inline`;return[{[`${t}-wrapper`]:{[`${n}-appear, ${n}-enter, ${n}-leave`]:{animationDuration:e.motionDurationSlow,animationTimingFunction:e.motionEaseInOutCirc,animationFillMode:`forwards`},[`${n}-appear, ${n}-enter`]:{animationName:oq},[`${n}-leave`]:{animationName:sq}}},oq,sq]},lq=e=>{let{componentCls:t,iconCls:n,uploadThumbnailSize:r,uploadProgressOffset:i}=e,a=`${t}-list`,o=`${a}-item`;return{[`${t}-wrapper`]:{[`${a}${a}-picture, ${a}${a}-picture-card`]:{[o]:{position:`relative`,height:r+e.lineWidth*2+e.paddingXS*2,padding:e.paddingXS,border:`${e.lineWidth}px ${e.lineType} ${e.colorBorder}`,borderRadius:e.borderRadiusLG,"&:hover":{background:`transparent`},[`${o}-thumbnail`]:G(G({},tn),{width:r,height:r,lineHeight:`${r+e.paddingSM}px`,textAlign:`center`,flex:`none`,[n]:{fontSize:e.fontSizeHeading2,color:e.colorPrimary},img:{display:`block`,width:`100%`,height:`100%`,overflow:`hidden`}}),[`${o}-progress`]:{bottom:i,width:`calc(100% - ${e.paddingSM*2}px)`,marginTop:0,paddingInlineStart:r+e.paddingXS}},[`${o}-error`]:{borderColor:e.colorError,[`${o}-thumbnail ${n}`]:{"svg path[fill='#e6f7ff']":{fill:e.colorErrorBg},"svg path[fill='#1890ff']":{fill:e.colorError}}},[`${o}-uploading`]:{borderStyle:`dashed`,[`${o}-name`]:{marginBottom:i}}}}}},uq=e=>{let{componentCls:t,iconCls:n,fontSizeLG:r,colorTextLightSolid:i}=e,a=`${t}-list`,o=`${a}-item`,s=e.uploadPicCardSize;return{[`${t}-wrapper${t}-picture-card-wrapper`]:G(G({},Ve()),{display:`inline-block`,width:`100%`,[`${t}${t}-select`]:{width:s,height:s,marginInlineEnd:e.marginXS,marginBottom:e.marginXS,textAlign:`center`,verticalAlign:`top`,backgroundColor:e.colorFillAlter,border:`${e.lineWidth}px dashed ${e.colorBorder}`,borderRadius:e.borderRadiusLG,cursor:`pointer`,transition:`border-color ${e.motionDurationSlow}`,[`> ${t}`]:{display:`flex`,alignItems:`center`,justifyContent:`center`,height:`100%`,textAlign:`center`},[`&:not(${t}-disabled):hover`]:{borderColor:e.colorPrimary}},[`${a}${a}-picture-card`]:{[`${a}-item-container`]:{display:`inline-block`,width:s,height:s,marginBlock:`0 ${e.marginXS}px`,marginInline:`0 ${e.marginXS}px`,verticalAlign:`top`},"&::after":{display:`none`},[o]:{height:`100%`,margin:0,"&::before":{position:`absolute`,zIndex:1,width:`calc(100% - ${e.paddingXS*2}px)`,height:`calc(100% - ${e.paddingXS*2}px)`,backgroundColor:e.colorBgMask,opacity:0,transition:`all ${e.motionDurationSlow}`,content:`" "`}},[`${o}:hover`]:{[`&::before, ${o}-actions`]:{opacity:1}},[`${o}-actions`]:{position:`absolute`,insetInlineStart:0,zIndex:10,width:`100%`,whiteSpace:`nowrap`,textAlign:`center`,opacity:0,transition:`all ${e.motionDurationSlow}`,[`${n}-eye, ${n}-download, ${n}-delete`]:{zIndex:10,width:r,margin:`0 ${e.marginXXS}px`,fontSize:r,cursor:`pointer`,transition:`all ${e.motionDurationSlow}`}},[`${o}-actions, ${o}-actions:hover`]:{[`${n}-eye, ${n}-download, ${n}-delete`]:{color:new me(i).setAlpha(.65).toRgbString(),"&:hover":{color:i}}},[`${o}-thumbnail, ${o}-thumbnail img`]:{position:`static`,display:`block`,width:`100%`,height:`100%`,objectFit:`contain`},[`${o}-name`]:{display:`none`,textAlign:`center`},[`${o}-file + ${o}-name`]:{position:`absolute`,bottom:e.margin,display:`block`,width:`calc(100% - ${e.paddingXS*2}px)`},[`${o}-uploading`]:{[`&${o}`]:{backgroundColor:e.colorFillAlter},[`&::before, ${n}-eye, ${n}-download, ${n}-delete`]:{display:`none`}},[`${o}-progress`]:{bottom:e.marginXL,width:`calc(100% - ${e.paddingXS*2}px)`,paddingInlineStart:0}}})}},dq=e=>{let{componentCls:t}=e;return{[`${t}-rtl`]:{direction:`rtl`}}},fq=e=>{let{componentCls:t,colorTextDisabled:n}=e;return{[`${t}-wrapper`]:G(G({},Ne(e)),{[t]:{outline:0,"input[type='file']":{cursor:`pointer`}},[`${t}-select`]:{display:`inline-block`},[`${t}-disabled`]:{color:n,cursor:`not-allowed`}})}},pq=Le(`Upload`,e=>{let{fontSizeHeading3:t,fontSize:n,lineHeight:r,lineWidth:i,controlHeightLG:a}=e,o=Math.round(n*r),s=Fe(e,{uploadThumbnailSize:t*2,uploadProgressOffset:o/2+i,uploadPicCardSize:a*2.55});return[fq(s),iq(s),lq(s),uq(s),aq(s),cq(s),dq(s),Kh(s)]}),mq=function(e,t,n,r){function i(e){return e instanceof n?e:new n(function(t){t(e)})}return new(n||=Promise)(function(n,a){function o(e){try{c(r.next(e))}catch(e){a(e)}}function s(e){try{c(r.throw(e))}catch(e){a(e)}}function c(e){e.done?n(e.value):i(e.value).then(o,s)}c((r=r.apply(e,t||[])).next())})},hq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);iu.value??p.value),[h,g]=Uu(e.defaultFileList||[],{value:y(e,`fileList`),postState:e=>{let t=Date.now();return(e??[]).map((e,n)=>(!e.uid&&!Object.isFrozen(e)&&(e.uid=`__AUTO__${t}_${n}__`),e))}}),_=W(`drop`),v=W(null);D(()=>{Zn(e.fileList!==void 0||r.value===void 0,`Upload`,"`value` is not a valid prop, do you mean `fileList`?"),Zn(e.transformFile===void 0,`Upload`,"`transformFile` is deprecated. Please use `beforeUpload` directly."),Zn(e.remove===void 0,`Upload`,"`remove` props is deprecated. Please use `remove` event.")});let b=(t,n,r)=>{var i,a;let s=[...n];e.maxCount===1?s=s.slice(-1):e.maxCount&&(s=s.slice(0,e.maxCount)),g(s);let c={file:t,fileList:s};r&&(c.event=r),(i=e[`onUpdate:fileList`])==null||i.call(e,c.fileList),(a=e.onChange)==null||a.call(e,c),o.onFieldChange()},x=(t,n)=>mq(this,void 0,void 0,function*(){let{beforeUpload:r,transformFile:i}=e,a=t;if(r){let e=yield r(t,n);if(e===!1)return!1;if(delete t[gq],e===gq)return Object.defineProperty(t,gq,{value:!0,configurable:!0}),!1;typeof e==`object`&&e&&(a=e)}return i&&(a=yield i(a)),a}),S=e=>{let t=e.filter(e=>!e.file[gq]);if(!t.length)return;let n=t.map(e=>HK(e.file)),r=[...h.value];n.forEach(e=>{r=UK(e,r)}),n.forEach((e,n)=>{let i=e;if(t[n].parsedFile)e.status=`uploading`;else{let{originFileObj:t}=e,n;try{n=new File([t],t.name,{type:t.type})}catch{n=new Blob([t],{type:t.type}),n.name=t.name,n.lastModifiedDate=new Date,n.lastModified=new Date().getTime()}n.uid=e.uid,i=n}b(i,r)})},C=(e,t,n)=>{try{typeof e==`string`&&(e=JSON.parse(e))}catch{}if(!WK(t,h.value))return;let r=HK(t);r.status=`done`,r.percent=100,r.response=e,r.xhr=n;let i=UK(r,h.value);b(r,i)},w=(e,t)=>{if(!WK(t,h.value))return;let n=HK(t);n.status=`uploading`,n.percent=e.percent;let r=UK(n,h.value);b(n,r,e)},T=(e,t,n)=>{if(!WK(n,h.value))return;let r=HK(n);r.error=e,r.response=t,r.status=`error`;let i=UK(r,h.value);b(r,i)},E=t=>{let n,r=e.onRemove||e.remove;Promise.resolve(typeof r==`function`?r(t):r).then(e=>{var r,i;if(e===!1)return;let a=GK(t,h.value);a&&(n=G(G({},t),{status:`removed`}),(r=h.value)==null||r.forEach(e=>{let t=n.uid===void 0?`name`:`uid`;e[t]===n[t]&&!Object.isFrozen(e)&&(e.status=`removed`)}),(i=v.value)==null||i.abort(n),b(n,a))})},O=t=>{var n;_.value=t.type,t.type===`drop`&&((n=e.onDrop)==null||n.call(e,t))};i({onBatchStart:S,onSuccess:C,onProgress:w,onError:T,fileList:h,upload:v});let[k]=Pt(`Upload`,Ut.Upload,a(()=>e.locale)),A=(t,r)=>{let{removeIcon:i,previewIcon:a,downloadIcon:o,previewFile:l,onPreview:u,onDownload:d,isImageUrl:f,progress:p,itemRender:g,iconRender:_,showUploadList:v}=e,{showDownloadIcon:y,showPreviewIcon:b,showRemoveIcon:x}=typeof v==`boolean`?{}:v;return v?s(rq,{prefixCls:c.value,listType:e.listType,items:h.value,previewFile:l,onPreview:u,onDownload:d,onRemove:E,showRemoveIcon:!m.value&&x,showPreviewIcon:b,showDownloadIcon:y,removeIcon:i,previewIcon:a,downloadIcon:o,iconRender:_,locale:k.value,isImageUrl:f,progress:p,itemRender:g,appendActionVisible:r,appendAction:t},G({},n)):t?.()};return()=>{let{listType:t,type:i}=e,{class:a,style:u}=r,p=hq(r,[`class`,`style`]),g=G(G(G({onBatchStart:S,onError:T,onProgress:w,onSuccess:C},p),e),{id:e.id??o.id.value,prefixCls:c.value,beforeUpload:x,onChange:void 0,disabled:m.value});delete g.remove,(!n.default||m.value)&&delete g.id;let y={[`${c.value}-rtl`]:l.value===`rtl`};if(i===`drag`){let e=Z(c.value,{[`${c.value}-drag`]:!0,[`${c.value}-drag-uploading`]:h.value.some(e=>e.status===`uploading`),[`${c.value}-drag-hover`]:_.value===`dragover`,[`${c.value}-disabled`]:m.value,[`${c.value}-rtl`]:l.value===`rtl`},r.class,f.value);return d(s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,y,a,f.value)}),[s(`div`,{class:e,onDrop:O,onDragover:O,onDragleave:O,style:r.style},[s(DK,X(X({},g),{},{ref:v,class:`${c.value}-btn`}),X({default:()=>[s(`div`,{class:`${c.value}-drag-container`},[n.default?.call(n)])]},n))]),A()]))}let b=Z(c.value,{[`${c.value}-select`]:!0,[`${c.value}-select-${t}`]:!0,[`${c.value}-disabled`]:m.value,[`${c.value}-rtl`]:l.value===`rtl`}),E=pe(n.default?.call(n)),D=e=>s(`div`,{class:b,style:e},[s(DK,X(X({},g),{},{ref:v}),n)]);return d(t===`picture-card`?s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,`${c.value}-picture-card-wrapper`,y,r.class,f.value)}),[A(D,!!(E&&E.length))]):s(`span`,X(X({},r),{},{class:Z(`${c.value}-wrapper`,y,r.class,f.value)}),[D(E&&E.length?void 0:{display:`none`}),A()]))}}}),vq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{height:t}=e,i=vq(e,[`height`]),{style:a}=r,o=vq(r,[`style`]),c=G(G(G({},i),o),{type:`drag`,style:G(G({},a),{height:typeof t==`number`?`${t}px`:t})});return s(_q,c,n)}}}),bq=yq,xq=G(_q,{Dragger:yq,LIST_IGNORE:gq,install(e){return e.component(_q.name,_q),e.component(yq.name,yq),e}});function Sq(e){return e.replace(/([A-Z])/g,`-$1`).toLowerCase()}function Cq(e){return Object.keys(e).map(t=>`${Sq(t)}: ${e[t]};`).join(` `)}function wq(){return window.devicePixelRatio||1}function Tq(e,t,n,r){e.translate(t,n),e.rotate(Math.PI/180*Number(r)),e.translate(-t,-n)}var Eq=(e,t)=>{let n=!1;return e.removedNodes.length&&(n=Array.from(e.removedNodes).some(e=>e===t)),e.type===`attributes`&&e.target===t&&(n=!0),n},Dq=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i2&&arguments[2]!==void 0?arguments[2]:{},{window:r=qx}=n,i=Dq(n,[`window`]),a,o=Gx(()=>r&&`MutationObserver`in r),s=()=>{a&&=(a.disconnect(),void 0)},c=H(()=>Ux(e),e=>{s(),o.value&&r&&e&&(a=new MutationObserver(t),a.observe(e,i))},{immediate:!0}),l=()=>{s(),c()};return Vx(l),{isSupported:o,stop:l}}var kq=2,Aq=3,jq=d({name:`AWatermark`,inheritAttrs:!1,props:zn({zIndex:Number,rotate:Number,width:Number,height:Number,image:String,content:$t([String,Array]),font:ut(),rootClassName:String,gap:vt(),offset:vt()},{zIndex:9,rotate:-22,font:{},gap:[100,100]}),setup(e,t){let{slots:n,attrs:r}=t,[,i]=Ct(),o=M(),c=M(),l=M(!1),u=a(()=>e.gap?.[0]??100),d=a(()=>e.gap?.[1]??100),f=a(()=>u.value/2),m=a(()=>d.value/2),h=a(()=>e.offset?.[0]??f.value),g=a(()=>e.offset?.[1]??m.value),_=a(()=>e.font?.fontSize??i.value.fontSizeLG),v=a(()=>e.font?.fontWeight??`normal`),y=a(()=>e.font?.fontStyle??`normal`),b=a(()=>e.font?.fontFamily??`sans-serif`),x=a(()=>e.font?.color??i.value.colorFill),S=a(()=>{let t={zIndex:e.zIndex??9,position:`absolute`,left:0,top:0,width:`100%`,height:`100%`,pointerEvents:`none`,backgroundRepeat:`repeat`},n=h.value-f.value,r=g.value-m.value;return n>0&&(t.left=`${n}px`,t.width=`calc(100% - ${n}px)`,n=0),r>0&&(t.top=`${r}px`,t.height=`calc(100% - ${r}px)`,r=0),t.backgroundPosition=`${n}px ${r}px`,t}),C=()=>{c.value&&=(c.value.remove(),void 0)},w=(e,t)=>{var n;o.value&&c.value&&(l.value=!0,c.value.setAttribute(`style`,Cq(G(G({},S.value),{backgroundImage:`url('${e}')`,backgroundSize:`${(u.value+t)*kq}px`}))),(n=o.value)==null||n.append(c.value),setTimeout(()=>{l.value=!1}))},T=t=>{let n=120,r=64,i=e.content,a=e.image,o=e.width,s=e.height;if(!a&&t.measureText){t.font=`${Number(_.value)}px ${b.value}`;let e=Array.isArray(i)?i:[i],a=e.map(e=>t.measureText(e).width);n=Math.ceil(Math.max(...a)),r=Number(_.value)*e.length+(e.length-1)*Aq}return[o??n,s??r]},E=(t,n,r,i,a)=>{let o=wq(),s=e.content,c=Number(_.value)*o;t.font=`${y.value} normal ${v.value} ${c}px/${a}px ${b.value}`,t.fillStyle=x.value,t.textAlign=`center`,t.textBaseline=`top`,t.translate(i/2,0),(Array.isArray(s)?s:[s])?.forEach((e,i)=>{t.fillText(e??``,n,r+i*(c+Aq*o))})},O=()=>{let t=document.createElement(`canvas`),n=t.getContext(`2d`),r=e.image,i=e.rotate??-22;if(n){c.value||=document.createElement(`div`);let e=wq(),[a,o]=T(n),s=(u.value+a)*e,l=(d.value+o)*e;t.setAttribute(`width`,`${s*kq}px`),t.setAttribute(`height`,`${l*kq}px`);let f=u.value*e/2,p=d.value*e/2,m=a*e,h=o*e,g=(m+u.value*e)/2,_=(h+d.value*e)/2,v=f+s,y=p+l,b=g+s,x=_+l;if(n.save(),Tq(n,g,_,i),r){let e=new Image;e.onload=()=>{n.drawImage(e,f,p,m,h),n.restore(),Tq(n,b,x,i),n.drawImage(e,v,y,m,h),w(t.toDataURL(),a)},e.crossOrigin=`anonymous`,e.referrerPolicy=`no-referrer`,e.src=r}else E(n,f,p,m,h),n.restore(),Tq(n,b,x,i),E(n,v,y,m,h),w(t.toDataURL(),a)}};return D(()=>{O()}),H(()=>[e,i.value.colorFill,i.value.fontSizeLG],()=>{O()},{deep:!0,flush:`post`}),p(()=>{C()}),Oq(o,e=>{l.value||e.forEach(e=>{Eq(e,c.value)&&(C(),O())})},{attributes:!0,subtree:!0,childList:!0,attributeFilter:[`style`,`class`]}),()=>s(`div`,X(X({},r),{},{ref:o,class:[r.class,e.rootClassName],style:[{position:`relative`},r.style]}),[n.default?.call(n)])}}),Mq=be(jq);function Nq(e,t){return{[`${e}, ${e}:hover, ${e}:focus`]:{color:t.colorTextDisabled,cursor:`not-allowed`}}}function Pq(e){return{backgroundColor:e.bgColorSelected,boxShadow:e.boxShadow}}var Fq=G({overflow:`hidden`},tn),Iq=e=>{let{componentCls:t}=e;return{[t]:G(G(G(G(G({},Ne(e)),{display:`inline-block`,padding:e.segmentedContainerPadding,color:e.labelColor,backgroundColor:e.bgColor,borderRadius:e.borderRadius,transition:`all ${e.motionDurationMid} ${e.motionEaseInOut}`,[`${t}-group`]:{position:`relative`,display:`flex`,alignItems:`stretch`,justifyItems:`flex-start`,width:`100%`},[`&${t}-rtl`]:{direction:`rtl`},[`&${t}-block`]:{display:`flex`},[`&${t}-block ${t}-item`]:{flex:1,minWidth:0},[`${t}-item`]:{position:`relative`,textAlign:`center`,cursor:`pointer`,transition:`color ${e.motionDurationMid} ${e.motionEaseInOut}`,borderRadius:e.borderRadiusSM,"&-selected":G(G({},Pq(e)),{color:e.labelColorHover}),"&::after":{content:`""`,position:`absolute`,width:`100%`,height:`100%`,top:0,insetInlineStart:0,borderRadius:`inherit`,transition:`background-color ${e.motionDurationMid}`,pointerEvents:`none`},[`&:hover:not(${t}-item-selected):not(${t}-item-disabled)`]:{color:e.labelColorHover,"&::after":{backgroundColor:e.bgColorHover}},"&-label":G({minHeight:e.controlHeight-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeight-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`},Fq),"&-icon + *":{marginInlineStart:e.marginSM/2},"&-input":{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:0,opacity:0,pointerEvents:`none`}},[`${t}-thumb`]:G(G({},Pq(e)),{position:`absolute`,insetBlockStart:0,insetInlineStart:0,width:0,height:`100%`,padding:`${e.paddingXXS}px 0`,borderRadius:e.borderRadiusSM,[`& ~ ${t}-item:not(${t}-item-selected):not(${t}-item-disabled)::after`]:{backgroundColor:`transparent`}}),[`&${t}-lg`]:{borderRadius:e.borderRadiusLG,[`${t}-item-label`]:{minHeight:e.controlHeightLG-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightLG-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontal}px`,fontSize:e.fontSizeLG},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadius}},[`&${t}-sm`]:{borderRadius:e.borderRadiusSM,[`${t}-item-label`]:{minHeight:e.controlHeightSM-e.segmentedContainerPadding*2,lineHeight:`${e.controlHeightSM-e.segmentedContainerPadding*2}px`,padding:`0 ${e.segmentedPaddingHorizontalSM}px`},[`${t}-item, ${t}-thumb`]:{borderRadius:e.borderRadiusXS}}}),Nq(`&-disabled ${t}-item`,e)),Nq(`${t}-item-disabled`,e)),{[`${t}-thumb-motion-appear-active`]:{transition:`transform ${e.motionDurationSlow} ${e.motionEaseInOut}, width ${e.motionDurationSlow} ${e.motionEaseInOut}`,willChange:`transform, width`}})}},Lq=Le(`Segmented`,e=>{let{lineWidthBold:t,lineWidth:n,colorTextLabel:r,colorText:i,colorFillSecondary:a,colorBgLayout:o,colorBgElevated:s}=e;return[Iq(Fe(e,{segmentedPaddingHorizontal:e.controlPaddingHorizontal-n,segmentedPaddingHorizontalSM:e.controlPaddingHorizontalSM-n,segmentedContainerPadding:t,labelColor:r,labelColorHover:i,bgColor:o,bgColorHover:a,bgColorSelected:s}))]}),Rq=e=>e?{left:e.offsetLeft,right:e.parentElement.clientWidth-e.clientWidth-e.offsetLeft,width:e.clientWidth}:null,zq=e=>e===void 0?void 0:`${e}px`,Bq=d({props:{value:bt(),getValueIndex:bt(),prefixCls:bt(),motionName:bt(),onMotionStart:bt(),onMotionEnd:bt(),direction:bt(),containerRef:bt()},emits:[`motionStart`,`motionEnd`],setup(e,t){let{emit:n}=t,r=W(),i=t=>{let n=e.getValueIndex(t),r=e.containerRef.value?.querySelectorAll(`.${e.prefixCls}-item`)[n];return r?.offsetParent&&r},o=W(null),c=W(null);H(()=>e.value,(e,t)=>{let r=i(t),a=i(e),s=Rq(r),l=Rq(a);o.value=s,c.value=l,n(r&&a?`motionStart`:`motionEnd`)},{flush:`post`});let l=a(()=>e.direction===`rtl`?zq(-o.value?.right):zq(o.value?.left)),u=a(()=>e.direction===`rtl`?zq(-c.value?.right):zq(c.value?.left)),d,f=e=>{clearTimeout(d),x(()=>{e&&(e.style.transform=`translateX(var(--thumb-start-left))`,e.style.width=`var(--thumb-start-width)`)})},m=t=>{d=setTimeout(()=>{t&&(Zv(t,`${e.motionName}-appear-active`),t.style.transform=`translateX(var(--thumb-active-left))`,t.style.width=`var(--thumb-active-width)`)})},h=t=>{o.value=null,c.value=null,t&&(t.style.transform=null,t.style.width=null,Qv(t,`${e.motionName}-appear-active`)),n(`motionEnd`)},g=a(()=>({"--thumb-start-left":l.value,"--thumb-start-width":zq(o.value?.width),"--thumb-active-left":u.value,"--thumb-active-width":zq(c.value?.width)}));return p(()=>{clearTimeout(d)}),()=>{let t={ref:r,style:g.value,class:[`${e.prefixCls}-thumb`]};return s(Gt,{appear:!0,onBeforeEnter:f,onEnter:m,onAfterEnter:h},{default:()=>[!o.value||!c.value?null:s(`div`,t,null)]})}}});function Vq(e){return e.map(e=>typeof e==`object`&&e?e:{label:e?.toString(),title:e?.toString(),value:e})}var Hq=()=>({prefixCls:String,options:vt(),block:Y(),disabled:Y(),size:q(),value:G(G({},$t([String,Number])),{required:!0}),motionName:String,onChange:Q(),"onUpdate:value":Q()}),Uq=(e,t)=>{let{slots:n,emit:r}=t,{value:i,disabled:a,payload:o,title:c,prefixCls:l,label:u=n.label,checked:d,className:f}=e,p=e=>{a||r(`change`,e,i)};return s(`label`,{class:Z({[`${l}-item-disabled`]:a},f)},[s(`input`,{class:`${l}-item-input`,type:`radio`,disabled:a,checked:d,onChange:p},null),s(`div`,{class:`${l}-item-label`,title:typeof c==`string`?c:``},[typeof u==`function`?u({value:i,disabled:a,payload:o,title:c}):u??i])])};Uq.inheritAttrs=!1;var Wq=d({name:`ASegmented`,inheritAttrs:!1,props:zn(Hq(),{options:[],motionName:`thumb-motion`}),slots:Object,setup(e,t){let{emit:n,slots:r,attrs:i}=t,{prefixCls:o,direction:c,size:l}=K(`segmented`,e),[u,d]=Lq(o),f=M(),p=M(!1),m=a(()=>Vq(e.options)),h=(t,r)=>{e.disabled||(n(`update:value`,r),n(`change`,r))};return()=>{let t=o.value;return u(s(`div`,X(X({},i),{},{class:Z(t,{[d.value]:!0,[`${t}-block`]:e.block,[`${t}-disabled`]:e.disabled,[`${t}-lg`]:l.value==`large`,[`${t}-sm`]:l.value==`small`,[`${t}-rtl`]:c.value===`rtl`},i.class),ref:f}),[s(`div`,{class:`${t}-group`},[s(Bq,{containerRef:f,prefixCls:t,value:e.value,motionName:`${t}-${e.motionName}`,direction:c.value,getValueIndex:e=>m.value.findIndex(t=>t.value===e),onMotionStart:()=>{p.value=!0},onMotionEnd:()=>{p.value=!1}},null),m.value.map(n=>s(Uq,X(X({key:n.value,prefixCls:t,checked:n.value===e.value,onChange:h},n),{},{className:Z(n.className,`${t}-item`,{[`${t}-item-selected`]:n.value===e.value&&!p.value}),disabled:!!e.disabled||!!n.disabled}),r))])]))}}}),Gq=be(Wq),Kq=e=>{let{componentCls:t}=e;return{[t]:G(G({},Ne(e)),{display:`flex`,justifyContent:`center`,alignItems:`center`,padding:e.paddingSM,backgroundColor:e.colorWhite,borderRadius:e.borderRadiusLG,border:`${e.lineWidth}px ${e.lineType} ${e.colorSplit}`,position:`relative`,width:`100%`,height:`100%`,overflow:`hidden`,[`& > ${t}-mask`]:{position:`absolute`,insetBlockStart:0,insetInlineStart:0,zIndex:10,display:`flex`,flexDirection:`column`,justifyContent:`center`,alignItems:`center`,width:`100%`,height:`100%`,color:e.colorText,lineHeight:e.lineHeight,background:e.QRCodeMaskBackgroundColor,textAlign:`center`,[`& > ${t}-expired , & > ${t}-scanned`]:{color:e.QRCodeTextColor}},"&-icon":{marginBlockEnd:e.marginXS,fontSize:e.controlHeight}}),[`${t}-borderless`]:{borderColor:`transparent`}}},qq=Le(`QRCode`,e=>Kq(Fe(e,{QRCodeTextColor:`rgba(0, 0, 0, 0.88)`,QRCodeMaskBackgroundColor:`rgba(255, 255, 255, 0.96)`}))),Jq={icon:{tag:`svg`,attrs:{viewBox:`64 64 896 896`,focusable:`false`},children:[{tag:`path`,attrs:{d:`M924.8 385.6a446.7 446.7 0 00-96-142.4 446.7 446.7 0 00-142.4-96C631.1 123.8 572.5 112 512 112s-119.1 11.8-174.4 35.2a446.7 446.7 0 00-142.4 96 446.7 446.7 0 00-96 142.4C75.8 440.9 64 499.5 64 560c0 132.7 58.3 257.7 159.9 343.1l1.7 1.4c5.8 4.8 13.1 7.5 20.6 7.5h531.7c7.5 0 14.8-2.7 20.6-7.5l1.7-1.4C901.7 817.7 960 692.7 960 560c0-60.5-11.9-119.1-35.2-174.4zM761.4 836H262.6A371.12 371.12 0 01140 560c0-99.4 38.7-192.8 109-263 70.3-70.3 163.7-109 263-109 99.4 0 192.8 38.7 263 109 70.3 70.3 109 163.7 109 263 0 105.6-44.5 205.5-122.6 276zM623.5 421.5a8.03 8.03 0 00-11.3 0L527.7 506c-18.7-5-39.4-.2-54.1 14.5a55.95 55.95 0 000 79.2 55.95 55.95 0 0079.2 0 55.87 55.87 0 0014.5-54.1l84.5-84.5c3.1-3.1 3.1-8.2 0-11.3l-28.3-28.3zM490 320h44c4.4 0 8-3.6 8-8v-80c0-4.4-3.6-8-8-8h-44c-4.4 0-8 3.6-8 8v80c0 4.4 3.6 8 8 8zm260 218v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8h-80c-4.4 0-8 3.6-8 8zm12.7-197.2l-31.1-31.1a8.03 8.03 0 00-11.3 0l-56.6 56.6a8.03 8.03 0 000 11.3l31.1 31.1c3.1 3.1 8.2 3.1 11.3 0l56.6-56.6c3.1-3.1 3.1-8.2 0-11.3zm-458.6-31.1a8.03 8.03 0 00-11.3 0l-31.1 31.1a8.03 8.03 0 000 11.3l56.6 56.6c3.1 3.1 8.2 3.1 11.3 0l31.1-31.1c3.1-3.1 3.1-8.2 0-11.3l-56.6-56.6zM262 530h-80c-4.4 0-8 3.6-8 8v44c0 4.4 3.6 8 8 8h80c4.4 0 8-3.6 8-8v-44c0-4.4-3.6-8-8-8z`}}]},name:`dashboard`,theme:`outlined`};function Yq(e){for(var t=1;t({size:{type:Number,default:160},value:{type:String,required:!0},type:q(`canvas`),color:String,bgColor:String,includeMargin:Boolean,imageSettings:ut()}),hJ=()=>G(G({},mJ()),{errorLevel:q(`M`),icon:String,iconSize:{type:Number,default:40},status:q(`active`),bordered:{type:Boolean,default:!0}}),gJ;(function(e){class t{static encodeText(n,r){let i=e.QrSegment.makeSegments(n);return t.encodeSegments(i,r)}static encodeBinary(n,r){let i=e.QrSegment.makeBytes(n);return t.encodeSegments([i],r)}static encodeSegments(e,r){let o=arguments.length>2&&arguments[2]!==void 0?arguments[2]:1,s=arguments.length>3&&arguments[3]!==void 0?arguments[3]:40,c=arguments.length>4&&arguments[4]!==void 0?arguments[4]:-1,l=arguments.length>5&&arguments[5]!==void 0?arguments[5]:!0;if(!(t.MIN_VERSION<=o&&o<=s&&s<=t.MAX_VERSION)||c<-1||c>7)throw RangeError(`Invalid value`);let u,d;for(u=o;;u++){let n=t.getNumDataCodewords(u,r)*8,i=a.getTotalBits(e,u);if(i<=n){d=i;break}if(u>=s)throw RangeError(`Data too long`)}for(let e of[t.Ecc.MEDIUM,t.Ecc.QUARTILE,t.Ecc.HIGH])l&&d<=t.getNumDataCodewords(u,e)*8&&(r=e);let f=[];for(let t of e){n(t.mode.modeBits,4,f),n(t.numChars,t.mode.numCharCountBits(u),f);for(let e of t.getData())f.push(e)}i(f.length==d);let p=t.getNumDataCodewords(u,r)*8;i(f.length<=p),n(0,Math.min(4,p-f.length),f),n(0,(8-f.length%8)%8,f),i(f.length%8==0);for(let e=236;f.lengthm[t>>>3]|=e<<7-(t&7)),new t(u,r,m,c)}constructor(e,n,r,a){if(this.version=e,this.errorCorrectionLevel=n,this.modules=[],this.isFunction=[],et.MAX_VERSION)throw RangeError(`Version value out of range`);if(a<-1||a>7)throw RangeError(`Mask value out of range`);this.size=e*4+17;let o=[];for(let e=0;e>>9)*1335;let a=(t<<10|n)^21522;i(!(a>>>15));for(let e=0;e<=5;e++)this.setFunctionModule(8,e,r(a,e));this.setFunctionModule(8,7,r(a,6)),this.setFunctionModule(8,8,r(a,7)),this.setFunctionModule(7,8,r(a,8));for(let e=9;e<15;e++)this.setFunctionModule(14-e,8,r(a,e));for(let e=0;e<8;e++)this.setFunctionModule(this.size-1-e,8,r(a,e));for(let e=8;e<15;e++)this.setFunctionModule(8,this.size-15+e,r(a,e));this.setFunctionModule(8,this.size-8,!0)}drawVersion(){if(this.version<7)return;let e=this.version;for(let t=0;t<12;t++)e=e<<1^(e>>>11)*7973;let t=this.version<<12|e;i(!(t>>>18));for(let e=0;e<18;e++){let n=r(t,e),i=this.size-11+e%3,a=Math.floor(e/3);this.setFunctionModule(i,a,n),this.setFunctionModule(a,i,n)}}drawFinderPattern(e,t){for(let n=-4;n<=4;n++)for(let r=-4;r<=4;r++){let i=Math.max(Math.abs(r),Math.abs(n)),a=e+r,o=t+n;0<=a&&a{(e!=l-o||n>=c)&&f.push(t[e])});return i(f.length==s),f}drawCodewords(e){if(e.length!=Math.floor(t.getNumRawDataModules(this.version)/8))throw RangeError(`Invalid argument`);let n=0;for(let t=this.size-1;t>=1;t-=2){t==6&&(t=5);for(let i=0;i>>3],7-(n&7)),n++)}}i(n==e.length*8)}applyMask(e){if(e<0||e>7)throw RangeError(`Mask value out of range`);for(let t=0;t5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[n][o],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;n5&&e++):(this.finderPenaltyAddHistory(i,a),r||(e+=this.finderPenaltyCountPatterns(a)*t.PENALTY_N3),r=this.modules[o][n],i=1);e+=this.finderPenaltyTerminateAndCount(r,i,a)*t.PENALTY_N3}for(let n=0;ne+ +!!t,n);let r=this.size*this.size,a=Math.ceil(Math.abs(n*20-r*10)/r)-1;return i(0<=a&&a<=9),e+=a*t.PENALTY_N4,i(0<=e&&e<=2568888),e}getAlignmentPatternPositions(){if(this.version==1)return[];{let e=Math.floor(this.version/7)+2,t=this.version==32?26:Math.ceil((this.version*4+4)/(e*2-2))*2,n=[6];for(let r=this.size-7;n.lengtht.MAX_VERSION)throw RangeError(`Version number out of range`);let n=(16*e+128)*e+64;if(e>=2){let t=Math.floor(e/7)+2;n-=(25*t-10)*t-55,e>=7&&(n-=36)}return i(208<=n&&n<=29648),n}static getNumDataCodewords(e,n){return Math.floor(t.getNumRawDataModules(e)/8)-t.ECC_CODEWORDS_PER_BLOCK[n.ordinal][e]*t.NUM_ERROR_CORRECTION_BLOCKS[n.ordinal][e]}static reedSolomonComputeDivisor(e){if(e<1||e>255)throw RangeError(`Degree out of range`);let n=[];for(let t=0;t0);for(let i of e){let e=i^r.shift();r.push(0),n.forEach((n,i)=>r[i]^=t.reedSolomonMultiply(n,e))}return r}static reedSolomonMultiply(e,t){if(e>>>8||t>>>8)throw RangeError(`Byte out of range`);let n=0;for(let r=7;r>=0;r--)n=n<<1^(n>>>7)*285,n^=(t>>>r&1)*e;return i(!(n>>>8)),n}finderPenaltyCountPatterns(e){let t=e[1];i(t<=this.size*3);let n=t>0&&e[2]==t&&e[3]==t*3&&e[4]==t&&e[5]==t;return(n&&e[0]>=t*4&&e[6]>=t?1:0)+(n&&e[6]>=t*4&&e[0]>=t?1:0)}finderPenaltyTerminateAndCount(e,t,n){return e&&(this.finderPenaltyAddHistory(t,n),t=0),t+=this.size,this.finderPenaltyAddHistory(t,n),this.finderPenaltyCountPatterns(n)}finderPenaltyAddHistory(e,t){t[0]==0&&(e+=this.size),t.pop(),t.unshift(e)}}t.MIN_VERSION=1,t.MAX_VERSION=40,t.PENALTY_N1=3,t.PENALTY_N2=3,t.PENALTY_N3=40,t.PENALTY_N4=10,t.ECC_CODEWORDS_PER_BLOCK=[[-1,7,10,15,20,26,18,20,24,30,18,20,24,26,30,22,24,28,30,28,28,28,28,30,30,26,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,10,16,26,18,24,16,18,22,22,26,30,22,22,24,24,28,28,26,26,26,26,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28,28],[-1,13,22,18,26,18,24,18,22,20,24,28,26,24,20,30,24,28,28,26,30,28,30,30,30,30,28,30,30,30,30,30,30,30,30,30,30,30,30,30,30],[-1,17,28,22,16,22,28,26,26,24,28,24,28,22,24,24,30,28,28,26,28,30,24,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30,30]],t.NUM_ERROR_CORRECTION_BLOCKS=[[-1,1,1,1,1,1,2,2,2,2,4,4,4,4,4,6,6,6,6,7,8,8,9,9,10,12,12,12,13,14,15,16,17,18,19,19,20,21,22,24,25],[-1,1,1,1,2,2,4,4,4,5,5,5,8,9,9,10,10,11,13,14,16,17,17,18,20,21,23,25,26,28,29,31,33,35,37,38,40,43,45,47,49],[-1,1,1,2,2,4,4,6,6,8,8,8,10,12,16,12,17,16,18,21,20,23,23,25,27,29,34,34,35,38,40,43,45,48,51,53,56,59,62,65,68],[-1,1,1,2,4,4,4,5,6,8,8,11,11,16,16,18,16,19,21,25,25,25,34,30,32,35,37,40,42,45,48,51,54,57,60,63,66,70,74,77,81]],e.QrCode=t;function n(e,t,n){if(t<0||t>31||e>>>t)throw RangeError(`Value out of range`);for(let r=t-1;r>=0;r--)n.push(e>>>r&1)}function r(e,t){return!!(e>>>t&1)}function i(e){if(!e)throw Error(`Assertion error`)}class a{static makeBytes(e){let t=[];for(let r of e)n(r,8,t);return new a(a.Mode.BYTE,e.length,t)}static makeNumeric(e){if(!a.isNumeric(e))throw RangeError(`String contains non-numeric characters`);let t=[];for(let r=0;r=1<1&&arguments[1]!==void 0?arguments[1]:0,n=[];return e.forEach(function(e,r){let i=null;e.forEach(function(a,o){if(!a&&i!==null){n.push(`M${i+t} ${r+t}h${o-i}v1H${i+t}z`),i=null;return}if(o===e.length-1){if(!a)return;i===null?n.push(`M${o+t},${r+t} h1v1H${o+t}z`):n.push(`M${i+t},${r+t} h${o+1-i}v1H${i+t}z`);return}a&&i===null&&(i=o)})}),n.join(``)}function OJ(e,t){return e.slice().map((e,n)=>n=t.y+t.h?e:e.map((e,n)=>n=t.x+t.w?e:!1))}function kJ(e,t,n,r){if(r==null)return null;let i=e.length+n*2,a=Math.floor(t*EJ),o=i/t,s=(r.width||a)*o,c=(r.height||a)*o,l=r.x==null?e.length/2-s/2:r.x*o,u=r.y==null?e.length/2-c/2:r.y*o,d=null;if(r.excavate){let e=Math.floor(l),t=Math.floor(u);d={x:e,y:t,w:Math.ceil(s+l-e),h:Math.ceil(c+u-t)}}return{x:l,y:u,h:c,w:s,excavation:d}}function AJ(e,t){return t==null?e?wJ:TJ:Math.floor(t)}var jJ=function(){try{new Path2D().addPath(new Path2D)}catch{return!1}return!0}(),MJ=d({name:`QRCodeCanvas`,inheritAttrs:!1,props:G(G({},mJ()),{level:String,bgColor:String,fgColor:String,marginSize:Number}),setup(e,t){let{attrs:n,expose:r}=t,i=a(()=>e.imageSettings?.src),o=M(null),c=M(null),l=M(!1);return r({toDataURL:(e,t)=>o.value?.toDataURL(e,t)}),P(()=>{let{value:t,size:n=yJ,level:r=bJ,bgColor:i=xJ,fgColor:a=SJ,includeMargin:s=CJ,marginSize:u,imageSettings:d}=e;if(o.value!=null){let e=o.value,f=e.getContext(`2d`);if(!f)return;let p=_J.QrCode.encodeText(t,vJ[r]).getModules(),m=AJ(s,u),h=p.length+m*2,g=kJ(p,n,m,d),_=c.value,v=l.value&&g!=null&&_!==null&&_.complete&&_.naturalHeight!==0&&_.naturalWidth!==0;v&&g.excavation!=null&&(p=OJ(p,g.excavation));let y=window.devicePixelRatio||1;e.height=e.width=n*y;let b=n/h*y;f.scale(b,b),f.fillStyle=i,f.fillRect(0,0,h,h),f.fillStyle=a,jJ?f.fill(new Path2D(DJ(p,m))):p.forEach(function(e,t){e.forEach(function(e,n){e&&f.fillRect(n+m,t+m,1,1)})}),v&&f.drawImage(_,g.x+m,g.y+m,g.w,g.h)}},{flush:`post`}),H(i,()=>{l.value=!1}),()=>{let t=e.size??yJ,r={height:`${t}px`,width:`${t}px`},a=null;return i.value!=null&&(a=s(`img`,{src:i.value,key:i.value,style:{display:`none`},onLoad:()=>{l.value=!0},ref:c},null)),s(v,null,[s(`canvas`,X(X({},n),{},{style:[r,n.style],ref:o}),null),a])}}}),NJ=d({name:`QRCodeSVG`,inheritAttrs:!1,props:G(G({},mJ()),{color:String,level:String,bgColor:String,fgColor:String,marginSize:Number,title:String}),setup(e){let t=null,n=null,r=null,i=null,a=null,o=null;return P(()=>{let{value:c,size:l=yJ,level:u=bJ,includeMargin:d=CJ,marginSize:f,imageSettings:p}=e;t=_J.QrCode.encodeText(c,vJ[u]).getModules(),n=AJ(d,f),r=t.length+n*2,i=kJ(t,l,n,p),p!=null&&i!=null&&(i.excavation!=null&&(t=OJ(t,i.excavation)),o=s(`image`,{"xlink:href":p.src,height:i.h,width:i.w,x:i.x+n,y:i.y+n,preserveAspectRatio:`none`},null)),a=DJ(t,n)}),()=>{let t=e.bgColor&&xJ,n=e.fgColor&&SJ;return s(`svg`,{height:e.size,width:e.size,viewBox:`0 0 ${r} ${r}`},[!!e.title&&s(`title`,null,[e.title]),s(`path`,{fill:t,d:`M0,0 h${r}v${r}H0z`,"shape-rendering":`crispEdges`},null),s(`path`,{fill:n,d:a,"shape-rendering":`crispEdges`},null),o])}}}),PJ=d({name:`AQrcode`,inheritAttrs:!1,props:hJ(),emits:[`refresh`],setup(e,t){let{emit:n,attrs:r,expose:i}=t,[o]=Pt(`QRCode`),{prefixCls:c}=K(`qrcode`,e),[l,u]=qq(c),[,d]=Ct(),f=W();i({toDataURL:(e,t)=>f.value?.toDataURL(e,t)});let p=a(()=>{let{value:t,icon:n=``,size:r=160,iconSize:i=40,color:a=d.value.colorText,bgColor:o=`transparent`,errorLevel:s=`M`}=e,c={src:n,x:void 0,y:void 0,height:i,width:i,excavate:!0};return{value:t,size:r-(d.value.paddingSM+d.value.lineWidth)*2,level:s,bgColor:o,fgColor:a,imageSettings:n?c:void 0}});return()=>{let t=c.value;return l(s(`div`,X(X({},r),{},{style:[r.style,{width:`${e.size}px`,height:`${e.size}px`,backgroundColor:p.value.bgColor}],class:[u.value,t,{[`${t}-borderless`]:!e.bordered}]}),[e.status!==`active`&&s(`div`,{class:`${t}-mask`},[e.status===`loading`&&s(bF,null,null),e.status===`expired`&&s(v,null,[s(`p`,{class:`${t}-expired`},[o.value.expired]),s(sr,{type:`link`,onClick:e=>n(`refresh`,e)},{default:()=>[o.value.refresh],icon:()=>s(gr,null,null)})]),e.status===`scanned`&&s(`p`,{class:`${t}-scanned`},[o.value.scanned])]),e.type===`canvas`?s(MJ,X({ref:f},p.value),null):s(NJ,p.value,null)]))}}}),FJ=be(PJ);function IJ(e){let t=window.innerWidth||document.documentElement.clientWidth,n=window.innerHeight||document.documentElement.clientHeight,{top:r,right:i,bottom:a,left:o}=e.getBoundingClientRect();return r>=0&&o>=0&&i<=t&&a<=n}function LJ(e,t,n,r){let[i,o]=Tn(void 0);P(()=>{let t=typeof e.value==`function`?e.value():e.value;o(t||null)},{flush:`post`});let[s,c]=Tn(null),l=()=>{if(!t.value){c(null);return}if(i.value){!IJ(i.value)&&t.value&&i.value.scrollIntoView(r.value);let{left:e,top:n,width:a,height:o}=i.value.getBoundingClientRect(),l={left:e,top:n,width:a,height:o,radius:0};JSON.stringify(s.value)!==JSON.stringify(l)&&c(l)}else c(null)};return D(()=>{H([t,i],()=>{l()},{flush:`post`,immediate:!0}),window.addEventListener(`resize`,l)}),p(()=>{window.removeEventListener(`resize`,l)}),[a(()=>{if(!s.value)return s.value;let e=n.value?.offset||6,t=n.value?.radius||2;return{left:s.value.left-e,top:s.value.top-e,width:s.value.width+e*2,height:s.value.height+e*2,radius:t}}),i]}var RJ=()=>({arrow:$t([Boolean,Object]),target:$t([String,Function,Object]),title:$t([String,Object]),description:$t([String,Object]),placement:q(),mask:$t([Object,Boolean],!0),className:{type:String},style:ut(),scrollIntoViewOptions:$t([Boolean,Object])}),zJ=()=>G(G({},RJ()),{prefixCls:{type:String},total:{type:Number},current:{type:Number},onClose:Q(),onFinish:Q(),renderPanel:Q(),onPrev:Q(),onNext:Q()}),BJ=d({name:`DefaultPanel`,inheritAttrs:!1,props:zJ(),setup(e,t){let{attrs:n}=t;return()=>{let{prefixCls:t,current:r,total:i,title:a,description:o,onClose:c,onPrev:l,onNext:u,onFinish:d}=e;return s(`div`,X(X({},n),{},{class:Z(`${t}-content`,n.class)}),[s(`div`,{class:`${t}-inner`},[s(`button`,{type:`button`,onClick:c,"aria-label":`Close`,class:`${t}-close`},[s(`span`,{class:`${t}-close-x`},[g(`×`)])]),s(`div`,{class:`${t}-header`},[s(`div`,{class:`${t}-title`},[a])]),s(`div`,{class:`${t}-description`},[o]),s(`div`,{class:`${t}-footer`},[s(`div`,{class:`${t}-sliders`},[i>1?[...Array.from({length:i}).keys()].map((e,t)=>s(`span`,{key:e,class:t===r?`active`:``},null)):null]),s(`div`,{class:`${t}-buttons`},[r===0?null:s(`button`,{class:`${t}-prev-btn`,onClick:l},[g(`Prev`)]),r===i-1?s(`button`,{class:`${t}-finish-btn`,onClick:d},[g(`Finish`)]):s(`button`,{class:`${t}-next-btn`,onClick:u},[g(`Next`)])])])])])}}}),VJ=d({name:`TourStep`,inheritAttrs:!1,props:zJ(),setup(e,t){let{attrs:n}=t;return()=>{let{current:t,renderPanel:r}=e;return s(v,null,[typeof r==`function`?r(G(G({},n),e),t):s(BJ,X(X({},n),e),null)])}}}),HJ=0,UJ=de();function WJ(){let e;return UJ?(e=HJ,HJ+=1):e=`TEST_OR_SSR`,e}function GJ(){let e=arguments.length>0&&arguments[0]!==void 0?arguments[0]:W(``),t=`vc_unique_${WJ()}`;return e.value||t}var KJ={fill:`transparent`,"pointer-events":`auto`},qJ=d({name:`TourMask`,props:{prefixCls:{type:String},pos:ut(),rootClassName:{type:String},showMask:Y(),fill:{type:String,default:`rgba(0,0,0,0.5)`},open:Y(),animated:$t([Boolean,Object]),zIndex:{type:Number}},setup(e,t){let{attrs:n}=t,r=GJ();return()=>{let{prefixCls:t,open:i,rootClassName:a,pos:o,showMask:c,fill:l,animated:u,zIndex:d}=e,f=`${t}-mask-${r}`,p=typeof u==`object`?u?.placeholder:u;return s(bn,{visible:i,autoLock:!0},{default:()=>i&&s(`div`,X(X({},n),{},{class:Z(`${t}-mask`,a,n.class),style:[{position:`fixed`,left:0,right:0,top:0,bottom:0,zIndex:d,pointerEvents:`none`},n.style]}),[c?s(`svg`,{style:{width:`100%`,height:`100%`}},[s(`defs`,null,[s(`mask`,{id:f},[s(`rect`,{x:`0`,y:`0`,width:`100vw`,height:`100vh`,fill:`white`},null),o&&s(`rect`,{x:o.left,y:o.top,rx:o.radius,width:o.width,height:o.height,fill:`black`,class:p?`${t}-placeholder-animated`:``},null)])]),s(`rect`,{x:`0`,y:`0`,width:`100%`,height:`100%`,fill:l,mask:`url(#${f})`},null),o&&s(v,null,[s(`rect`,X(X({},KJ),{},{x:`0`,y:`0`,width:`100%`,height:o.top}),null),s(`rect`,X(X({},KJ),{},{x:`0`,y:`0`,width:o.left,height:`100%`}),null),s(`rect`,X(X({},KJ),{},{x:`0`,y:o.top+o.height,width:`100%`,height:`calc(100vh - ${o.top+o.height}px)`}),null),s(`rect`,X(X({},KJ),{},{x:o.left+o.width,y:`0`,width:`calc(100vw - ${o.left+o.width}px)`,height:`100%`}),null)])]):null])})}}}),JJ=[0,0],YJ={left:{points:[`cr`,`cl`],offset:[-8,0]},right:{points:[`cl`,`cr`],offset:[8,0]},top:{points:[`bc`,`tc`],offset:[0,-8]},bottom:{points:[`tc`,`bc`],offset:[0,8]},topLeft:{points:[`bl`,`tl`],offset:[0,-8]},leftTop:{points:[`tr`,`tl`],offset:[-8,0]},topRight:{points:[`br`,`tr`],offset:[0,-8]},rightTop:{points:[`tl`,`tr`],offset:[8,0]},bottomRight:{points:[`tr`,`br`],offset:[0,8]},rightBottom:{points:[`bl`,`br`],offset:[8,0]},bottomLeft:{points:[`tl`,`bl`],offset:[0,8]},leftBottom:{points:[`br`,`bl`],offset:[-8,0]}};function XJ(){let e=arguments.length>0&&arguments[0]!==void 0&&arguments[0],t={};return Object.keys(YJ).forEach(n=>{t[n]=G(G({},YJ[n]),{autoArrow:e,targetOffset:JJ})}),t}XJ();var ZJ=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{builtinPlacements:e,popupAlign:t}=Aa();return{builtinPlacements:e,popupAlign:t,steps:vt(),open:Y(),defaultCurrent:{type:Number},current:{type:Number},onChange:Q(),onClose:Q(),onFinish:Q(),mask:$t([Boolean,Object],!0),arrow:$t([Boolean,Object],!0),rootClassName:{type:String},placement:q(`bottom`),prefixCls:{type:String,default:`rc-tour`},renderPanel:Q(),gap:ut(),animated:$t([Boolean,Object]),scrollIntoViewOptions:$t([Boolean,Object],!0),zIndex:{type:Number,default:1001}}},eY=d({name:`Tour`,inheritAttrs:!1,props:zn($J(),{}),setup(e){let{defaultCurrent:t,placement:n,mask:r,scrollIntoViewOptions:o,open:c,gap:l,arrow:u}=i(e),d=W(),[f,p]=Uu(0,{value:a(()=>e.current),defaultValue:t.value}),[m,h]=Uu(void 0,{value:a(()=>e.open),postState:t=>f.value<0||f.value>=e.steps.length?!1:t??!0}),g=M(m.value);P(()=>{m.value&&!g.value&&p(0),g.value=m.value});let _=a(()=>e.steps[f.value]||{}),y=a(()=>_.value.placement??n.value),b=a(()=>m.value&&(_.value.mask??r.value)),x=a(()=>_.value.scrollIntoViewOptions??o.value),[S,C]=LJ(a(()=>_.value.target),c,l,x),w=a(()=>C.value?_.value.arrow===void 0?u.value:_.value.arrow:!1),T=a(()=>typeof w.value==`object`&&w.value.pointAtCenter);H(T,()=>{var e;(e=d.value)==null||e.forcePopupAlign()}),H(f,()=>{var e;(e=d.value)==null||e.forcePopupAlign()});let E=t=>{var n;p(t),(n=e.onChange)==null||n.call(e,t)};return()=>{let{prefixCls:t,steps:n,onClose:r,onFinish:i,rootClassName:o,renderPanel:c,animated:l,zIndex:u}=e,p=ZJ(e,[`prefixCls`,`steps`,`onClose`,`onFinish`,`rootClassName`,`renderPanel`,`animated`,`zIndex`]);if(C.value===void 0)return null;let g=()=>{h(!1),r?.(f.value)},x=typeof b.value==`boolean`?b.value:!!b.value,D=typeof b.value==`boolean`?void 0:b.value,O=()=>C.value||document.body,k=()=>s(VJ,X({arrow:w.value,key:`content`,prefixCls:t,total:n.length,renderPanel:c,onPrev:()=>{E(f.value-1)},onNext:()=>{E(f.value+1)},onClose:g,current:f.value,onFinish:()=>{g(),i?.()}},_.value),null),A=a(()=>{let e=S.value||QJ,t={};return Object.keys(e).forEach(n=>{typeof e[n]==`number`?t[n]=`${e[n]}px`:t[n]=e[n]}),t});return m.value?s(v,null,[s(qJ,{zIndex:u,prefixCls:t,pos:S.value,showMask:x,style:D?.style,fill:D?.color,open:m.value,animated:l,rootClassName:o},null),s(al,X(X({},p),{},{arrow:!!p.arrow,builtinPlacements:_.value.target?p.builtinPlacements??XJ(T.value):void 0,ref:d,popupStyle:_.value.target?_.value.style:G(G({},_.value.style),{position:`fixed`,left:QJ.left,top:QJ.top,transform:`translate(-50%, -50%)`}),popupPlacement:y.value,popupVisible:m.value,popupClassName:Z(o,_.value.className),prefixCls:t,popup:k,forceRender:!1,destroyPopupOnHide:!0,zIndex:u,mask:!1,getTriggerDOMNode:O}),{default:()=>[s(bn,{visible:m.value,autoLock:!0},{default:()=>[s(`div`,{class:Z(o,`${t}-target-placeholder`),style:G(G({},A.value),{position:`fixed`,pointerEvents:`none`})},null)]})]})]):null}}}),tY=()=>G(G({},$J()),{steps:{type:Array},prefixCls:{type:String},current:{type:Number},type:{type:String},"onUpdate:current":Function}),nY=d({name:`ATourPanel`,inheritAttrs:!1,props:G(G({},zJ()),{cover:{type:Object},nextButtonProps:{type:Object},prevButtonProps:{type:Object},current:{type:Number},type:{type:String}}),setup(e,t){let{attrs:n,slots:r}=t,{current:o,total:c}=i(e),l=a(()=>o.value===c.value-1),u=t=>{var n;let r=e.prevButtonProps;(n=e.onPrev)==null||n.call(e,t),typeof r?.onClick==`function`&&r?.onClick()},d=t=>{var n,r;let i=e.nextButtonProps;l.value?(n=e.onFinish)==null||n.call(e,t):(r=e.onNext)==null||r.call(e,t),typeof i?.onClick==`function`&&i?.onClick()};return()=>{let{prefixCls:t,title:i,onClose:a,cover:f,description:p,type:m,arrow:h}=e,g=e.prevButtonProps,_=e.nextButtonProps,v;i&&(v=s(`div`,{class:`${t}-header`},[s(`div`,{class:`${t}-title`},[i])]));let y;p&&(y=s(`div`,{class:`${t}-description`},[p]));let b;f&&(b=s(`div`,{class:`${t}-cover`},[f]));let x;x=r.indicatorsRender?r.indicatorsRender({current:o.value,total:c}):[...Array.from({length:c.value}).keys()].map((e,n)=>s(`span`,{key:e,class:Z(n===o.value&&`${t}-indicator-active`,`${t}-indicator`)},null));let S=m===`primary`?`default`:`primary`,C={type:`default`,ghost:m===`primary`};return s(ct,{componentName:`Tour`,defaultLocale:Ut.Tour},{default:e=>s(`div`,X(X({},n),{},{class:Z(m===`primary`?`${t}-primary`:``,n.class,`${t}-content`)}),[h&&s(`div`,{class:`${t}-arrow`,key:`arrow`},null),s(`div`,{class:`${t}-inner`},[s(_t,{class:`${t}-close`,onClick:a},null),b,v,y,s(`div`,{class:`${t}-footer`},[c.value>1&&s(`div`,{class:`${t}-indicators`},[x]),s(`div`,{class:`${t}-buttons`},[o.value===0?null:s(sr,X(X(X({},C),g),{},{onClick:u,size:`small`,class:Z(`${t}-prev-btn`,g?.className)}),{default:()=>[it(g?.children)?g.children():g?.children??e.Previous]}),s(sr,X(X({type:S},_),{},{onClick:d,size:`small`,class:Z(`${t}-next-btn`,_?.className)}),{default:()=>[it(_?.children)?_?.children():l.value?e.Finish:e.Next]})])])])])})}}}),rY=e=>{let{defaultType:t,steps:n,current:r,defaultCurrent:i}=e,o=W(i?.value),s=a(()=>r?.value);H(s,e=>{o.value=e??i?.value},{immediate:!0});let c=e=>{o.value=e},l=a(()=>typeof o.value==`number`?n&&n.value?.[o.value]?.type:t?.value);return{currentMergedType:a(()=>l.value??t?.value),updateInnerCurrent:c}},iY=e=>{let{componentCls:t,lineHeight:n,padding:r,paddingXS:i,borderRadius:a,borderRadiusXS:o,colorPrimary:s,colorText:c,colorFill:l,indicatorHeight:u,indicatorWidth:d,boxShadowTertiary:f,tourZIndexPopup:p,fontSize:m,colorBgContainer:h,fontWeightStrong:g,marginXS:_,colorTextLightSolid:v,tourBorderRadius:y,colorWhite:b,colorBgTextHover:x,tourCloseSize:S,motionDurationSlow:C,antCls:w}=e;return[{[t]:G(G({},Ne(e)),{color:c,position:`absolute`,zIndex:p,display:`block`,visibility:`visible`,fontSize:m,lineHeight:n,width:520,"--antd-arrow-background-color":h,"&-pure":{maxWidth:`100%`,position:`relative`},[`&${t}-hidden`]:{display:`none`},[`${t}-content`]:{position:`relative`},[`${t}-inner`]:{textAlign:`start`,textDecoration:`none`,borderRadius:y,boxShadow:f,position:`relative`,backgroundColor:h,border:`none`,backgroundClip:`padding-box`,[`${t}-close`]:{position:`absolute`,top:r,insetInlineEnd:r,color:e.colorIcon,outline:`none`,width:S,height:S,borderRadius:e.borderRadiusSM,transition:`background-color ${e.motionDurationMid}, color ${e.motionDurationMid}`,display:`flex`,alignItems:`center`,justifyContent:`center`,"&:hover":{color:e.colorIconHover,backgroundColor:e.wireframe?`transparent`:e.colorFillContent}},[`${t}-cover`]:{textAlign:`center`,padding:`${r+S+i}px ${r}px 0`,img:{width:`100%`}},[`${t}-header`]:{padding:`${r}px ${r}px ${i}px`,[`${t}-title`]:{lineHeight:n,fontSize:m,fontWeight:g}},[`${t}-description`]:{padding:`0 ${r}px`,lineHeight:n,wordWrap:`break-word`},[`${t}-footer`]:{padding:`${i}px ${r}px ${r}px`,textAlign:`end`,borderRadius:`0 0 ${o}px ${o}px`,display:`flex`,[`${t}-indicators`]:{display:`inline-block`,[`${t}-indicator`]:{width:d,height:u,display:`inline-block`,borderRadius:`50%`,background:l,"&:not(:last-child)":{marginInlineEnd:u},"&-active":{background:s}}},[`${t}-buttons`]:{marginInlineStart:`auto`,[`${w}-btn`]:{marginInlineStart:_}}}},[`${t}-primary, &${t}-primary`]:{"--antd-arrow-background-color":s,[`${t}-inner`]:{color:v,textAlign:`start`,textDecoration:`none`,backgroundColor:s,borderRadius:a,boxShadow:f,[`${t}-close`]:{color:v},[`${t}-indicators`]:{[`${t}-indicator`]:{background:new me(v).setAlpha(.15).toRgbString(),"&-active":{background:v}}},[`${t}-prev-btn`]:{color:v,borderColor:new me(v).setAlpha(.15).toRgbString(),backgroundColor:s,"&:hover":{backgroundColor:new me(v).setAlpha(.15).toRgbString(),borderColor:`transparent`}},[`${t}-next-btn`]:{color:s,borderColor:`transparent`,background:b,"&:hover":{background:new me(x).onBackground(b).toRgbString()}}}}}),[`${t}-mask`]:{[`${t}-placeholder-animated`]:{transition:`all ${C}`}},[[`&-placement-left`,`&-placement-leftTop`,`&-placement-leftBottom`,`&-placement-right`,`&-placement-rightTop`,`&-placement-rightBottom`].join(`,`)]:{[`${t}-inner`]:{borderRadius:Math.min(y,8)}}},d_(e,{colorBg:`var(--antd-arrow-background-color)`,contentRadius:y,limitVerticalRadius:!0})]},aY=Le(`Tour`,e=>{let{borderRadiusLG:t,fontSize:n,lineHeight:r}=e;return[iY(Fe(e,{tourZIndexPopup:e.zIndexPopupBase+70,indicatorWidth:6,indicatorHeight:6,tourBorderRadius:t,tourCloseSize:n*r}))]}),oY=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i{let{steps:t,current:i,type:c,rootClassName:l}=e,u=oY(e,[`steps`,`current`,`type`,`rootClassName`]),d=Z({[`${f.value}-primary`]:g.value===`primary`,[`${f.value}-rtl`]:p.value===`rtl`},h.value,l),v=(e,t)=>s(nY,X(X({},e),{},{type:c,current:t}),{indicatorsRender:o.indicatorsRender}),y=e=>{_(e),r(`update:current`,e),r(`change`,e)},b=a(()=>n_({arrowPointAtCenter:!0,autoAdjustOverflow:!0}));return m(s(eY,X(X(X({},n),u),{},{rootClassName:d,prefixCls:f.value,current:i,defaultCurrent:e.defaultCurrent,animated:!0,renderPanel:v,onChange:y,steps:t,builtinPlacements:b.value}),null))}}}),cY=be(sY),lY=Symbol(`appConfigContext`),uY=t=>e(lY,t),dY=()=>C(lY,{}),fY=Symbol(`appContext`),pY=t=>e(fY,t),mY=k({message:{},notification:{},modal:{}}),hY=()=>C(fY,mY),gY=e=>{let{componentCls:t,colorText:n,fontSize:r,lineHeight:i,fontFamily:a}=e;return{[t]:{color:n,fontSize:r,lineHeight:i,fontFamily:a}}},_Y=Le(`App`,e=>[gY(e)]),vY=()=>({rootClassName:String,message:ut(),notification:ut()}),yY=()=>hY(),bY=d({name:`AApp`,props:zn(vY(),{}),setup(e,t){let{slots:n}=t,{prefixCls:r}=K(`app`,e),[i,o]=_Y(r),c=a(()=>Z(o.value,r.value,e.rootClassName)),l=dY(),u=a(()=>({message:G(G({},l.message),e.message),notification:G(G({},l.notification),e.notification)}));uY(u.value);let[d,f]=Nt(u.value.message),[p,m]=xt(u.value.notification),[h,g]=Xn();return pY(a(()=>({message:d,notification:p,modal:h})).value),()=>i(s(`div`,{class:c.value},[g(),f(),m(),n.default?.call(n)]))}});bY.useApp=yY,bY.install=function(e){e.component(bY.name,bY)};var xY=[`wrap`,`nowrap`,`wrap-reverse`],SY=[`flex-start`,`flex-end`,`start`,`end`,`center`,`space-between`,`space-around`,`space-evenly`,`stretch`,`normal`,`left`,`right`],CY=[`center`,`start`,`end`,`flex-start`,`flex-end`,`self-start`,`self-end`,`baseline`,`normal`,`stretch`],wY=(e,t)=>{let n={};return xY.forEach(r=>{n[`${e}-wrap-${r}`]=t.wrap===r}),n},TY=(e,t)=>{let n={};return CY.forEach(r=>{n[`${e}-align-${r}`]=t.align===r}),n[`${e}-align-stretch`]=!t.align&&!!t.vertical,n},EY=(e,t)=>{let n={};return SY.forEach(r=>{n[`${e}-justify-${r}`]=t.justify===r}),n};function DY(e,t){return Z(G(G(G({},wY(e,t)),TY(e,t)),EY(e,t)))}var OY=e=>{let{componentCls:t}=e;return{[t]:{display:`flex`,"&-vertical":{flexDirection:`column`},"&-rtl":{direction:`rtl`},"&:empty":{display:`none`}}}},kY=e=>{let{componentCls:t}=e;return{[t]:{"&-gap-small":{gap:e.flexGapSM},"&-gap-middle":{gap:e.flexGap},"&-gap-large":{gap:e.flexGapLG}}}},AY=e=>{let{componentCls:t}=e,n={};return xY.forEach(e=>{n[`${t}-wrap-${e}`]={flexWrap:e}}),n},jY=e=>{let{componentCls:t}=e,n={};return CY.forEach(e=>{n[`${t}-align-${e}`]={alignItems:e}}),n},MY=e=>{let{componentCls:t}=e,n={};return SY.forEach(e=>{n[`${t}-justify-${e}`]={justifyContent:e}}),n},NY=Le(`Flex`,e=>{let t=Fe(e,{flexGapSM:e.paddingXS,flexGap:e.padding,flexGapLG:e.paddingLG});return[OY(t),kY(t),AY(t),jY(t),MY(t)]});function PY(e){return[`small`,`middle`,`large`].includes(e)}var FY=()=>({prefixCls:q(),vertical:Y(),wrap:q(),justify:q(),align:q(),flex:$t([Number,String]),gap:$t([Number,String]),component:bt()}),IY=function(e,t){var n={};for(var r in e)Object.prototype.hasOwnProperty.call(e,r)&&t.indexOf(r)<0&&(n[r]=e[r]);if(e!=null&&typeof Object.getOwnPropertySymbols==`function`)for(var i=0,r=Object.getOwnPropertySymbols(e);i[c.value,u.value,DY(c.value,e),{[`${c.value}-rtl`]:o.value===`rtl`,[`${c.value}-gap-${e.gap}`]:PY(e.gap),[`${c.value}-vertical`]:e.vertical??i?.value.vertical}]);return()=>{let{flex:t,gap:i,component:a=`div`}=e,o=IY(e,[`flex`,`gap`,`component`]),c={};return t&&(c.flex=t),i&&!PY(i)&&(c.gap=`${i}px`),l(s(a,X({class:[r.class,d.value],style:[r.style,c]},nr(o,[`justify`,`wrap`,`align`,`vertical`])),{default:()=>[n.default?.call(n)]}))}}}),RY=be(LY),zY=S({Affix:()=>Yi,Alert:()=>Ag,Anchor:()=>xa,AnchorLink:()=>ga,App:()=>bY,AutoComplete:()=>yg,AutoCompleteOptGroup:()=>_g,AutoCompleteOption:()=>gg,Avatar:()=>E_,AvatarGroup:()=>T_,BackTop:()=>hM,Badge:()=>G_,BadgeRibbon:()=>H_,Breadcrumb:()=>Dy,BreadcrumbItem:()=>gv,BreadcrumbSeparator:()=>Ey,Button:()=>sr,ButtonGroup:()=>Rn,Calendar:()=>nC,Card:()=>Mw,CardGrid:()=>jw,CardMeta:()=>Aw,Carousel:()=>ZT,Cascader:()=>nA,CheckableTag:()=>CA,Checkbox:()=>dA,CheckboxGroup:()=>uA,Col:()=>pA,Collapse:()=>Ww,CollapsePanel:()=>Uw,Comment:()=>_A,Compact:()=>Fn,ConfigProvider:()=>Wt,DatePicker:()=>aj,Descriptions:()=>yj,DescriptionsItem:()=>fj,DirectoryTree:()=>lU,Divider:()=>Cj,Drawer:()=>Uj,Dropdown:()=>wj,DropdownButton:()=>uv,Empty:()=>fe,Flex:()=>RY,FloatButton:()=>gM,FloatButtonGroup:()=>uM,Form:()=>Wk,FormItem:()=>Fk,FormItemRest:()=>fd,Grid:()=>fA,Image:()=>iP,ImagePreviewGroup:()=>rP,Input:()=>dN,InputGroup:()=>NM,InputNumber:()=>LP,InputPassword:()=>uN,InputSearch:()=>FM,Layout:()=>sF,LayoutContent:()=>oF,LayoutFooter:()=>iF,LayoutHeader:()=>rF,LayoutSider:()=>aF,List:()=>aI,ListItem:()=>eI,ListItemMeta:()=>ZF,LocaleProvider:()=>Vt,Mentions:()=>LI,MentionsOption:()=>II,Menu:()=>vy,MenuDivider:()=>ty,MenuItem:()=>Bv,MenuItemGroup:()=>ey,Modal:()=>ar,MonthPicker:()=>ej,PageHeader:()=>oL,Pagination:()=>XF,Popconfirm:()=>dL,Popover:()=>w_,Progress:()=>KL,QRCode:()=>FJ,QuarterPicker:()=>rj,Radio:()=>xS,RadioButton:()=>bS,RadioGroup:()=>yS,RangePicker:()=>ij,Rate:()=>sR,Result:()=>ER,Row:()=>DR,Segmented:()=>Gq,Select:()=>lg,SelectOptGroup:()=>dg,SelectOption:()=>ug,Skeleton:()=>Dw,SkeletonAvatar:()=>Ew,SkeletonButton:()=>Sw,SkeletonImage:()=>Tw,SkeletonInput:()=>Cw,SkeletonTitle:()=>QC,Slider:()=>cz,Space:()=>nL,Spin:()=>bF,Statistic:()=>YI,StatisticCountdown:()=>JI,Step:()=>jz,Steps:()=>Mz,SubMenu:()=>Yv,Switch:()=>Vz,TabPane:()=>BC,Table:()=>rW,TableColumn:()=>QU,TableColumnGroup:()=>$U,TableSummary:()=>nW,TableSummaryCell:()=>tW,TableSummaryRow:()=>eW,Tabs:()=>HC,Tag:()=>wA,Textarea:()=>QM,TimePicker:()=>hG,TimeRangePicker:()=>mG,Timeline:()=>bG,TimelineItem:()=>gG,Tooltip:()=>v_,Tour:()=>cY,Transfer:()=>OW,Tree:()=>dU,TreeNode:()=>uU,TreeSelect:()=>uG,TreeSelectNode:()=>lG,Typography:()=>fK,TypographyLink:()=>rK,TypographyParagraph:()=>aK,TypographyText:()=>sK,TypographyTitle:()=>dK,Upload:()=>xq,UploadDragger:()=>bq,Watermark:()=>Mq,WeekPicker:()=>$A,message:()=>ot,notification:()=>Rt}),BY={version:Ze,install:function(e){return Object.keys(zY).forEach(t=>{let n=zY[t];n.install&&e.use(n)}),e.use(zi.StyleProvider),e.config.globalProperties.$message=ot,e.config.globalProperties.$notification=Rt,e.config.globalProperties.$info=ar.info,e.config.globalProperties.$success=ar.success,e.config.globalProperties.$error=ar.error,e.config.globalProperties.$warning=ar.warning,e.config.globalProperties.$confirm=ar.confirm,e.config.globalProperties.$destroyAll=ar.destroyAll,e}},VY={};function HY(e,t){let n=U(`router-view`);return _(),R(n)}var UY=ne(VY,[[`render`,HY]]),WY=typeof document<`u`,GY=/#/g,KY=/&/g,qY=/\//g,JY=/=/g,YY=/\?/g,XY=/\+/g,ZY=/%5B/g,QY=/%5D/g,$Y=/%5E/g,eX=/%60/g,tX=/%7B/g,nX=/%7C/g,rX=/%7D/g,iX=/%20/g;function aX(e){return e==null?``:encodeURI(``+e).replace(nX,`|`).replace(ZY,`[`).replace(QY,`]`)}function oX(e){return aX(e).replace(tX,`{`).replace(rX,`}`).replace($Y,`^`)}function sX(e){return aX(e).replace(XY,`%2B`).replace(iX,`+`).replace(GY,`%23`).replace(KY,`%26`).replace(eX,"`").replace(tX,`{`).replace(rX,`}`).replace($Y,`^`)}function cX(e){return sX(e).replace(JY,`%3D`)}function lX(e){return aX(e).replace(GY,`%23`).replace(YY,`%3F`)}function uX(e){return lX(e).replace(qY,`%2F`)}function dX(e){if(e==null)return null;try{return decodeURIComponent(``+e)}catch{}return``+e}var fX=/\/$/,pX=e=>e.replace(fX,``);function mX(e,t,n=`/`){let r,i={},a=``,o=``,s=t.indexOf(`#`),c=t.indexOf(`?`);return c=s>=0&&c>s?-1:c,c>=0&&(r=t.slice(0,c),a=t.slice(c,s>0?s:t.length),i=e(a.slice(1))),s>=0&&(r||=t.slice(0,s),o=t.slice(s,t.length)),r=SX(r??t,n),{fullPath:r+a+o,path:r,query:i,hash:dX(o)}}function hX(e,t){let n=t.query?e(t.query):``;return t.path+(n&&`?`)+n+(t.hash||``)}function gX(e,t){return!t||!e.toLowerCase().startsWith(t.toLowerCase())?e:e.slice(t.length)||`/`}function _X(e,t,n){let r=t.matched.length-1,i=n.matched.length-1;return r>-1&&r===i&&vX(t.matched[r],n.matched[i])&&yX(t.params,n.params)&&e(t.query)===e(n.query)&&t.hash===n.hash}function vX(e,t){return(e.aliasOf||e)===(t.aliasOf||t)}function yX(e,t){if(Object.keys(e).length!==Object.keys(t).length)return!1;for(var n in e)if(!bX(e[n],t[n]))return!1;return!0}function bX(e,t){return Mr(e)?xX(e,t):Mr(t)?xX(t,e):(e&&e.valueOf())===(t&&t.valueOf())}function xX(e,t){return Mr(t)?e.length===t.length&&e.every((e,n)=>e===t[n]):e.length===1&&e[0]===t}function SX(e,t){if(e.startsWith(`/`))return e;if(!e)return t;let n=t.split(`/`),r=e.split(`/`),i=r[r.length-1];(i===`..`||i===`.`)&&r.push(``);let a=n.length-1,o,s;for(o=0;o1&&a--;else break}return n.slice(0,a).join(`/`)+`/`+r.slice(o).join(`/`)}var CX={path:`/`,name:void 0,params:{},query:{},hash:``,fullPath:`/`,matched:[],meta:{},redirectedFrom:void 0};function wX(e){if(!e){if(WY){let t=document.querySelector(`base`);e=t&&t.getAttribute(`href`)||`/`,e=e.replace(/^\w+:\/\/[^/]+/,``)}else e=`/`}return e[0]!==`/`&&e[0]!==`#`&&(e=`/`+e),pX(e)}var TX=/^[^#]+#/;function EX(e,t){return e.replace(TX,`#`)+t}function DX(e,t){let n=document.documentElement.getBoundingClientRect(),r=e.getBoundingClientRect();return{behavior:t.behavior,left:r.left-n.left-(t.left||0),top:r.top-n.top-(t.top||0)}}var OX=()=>({left:window.scrollX,top:window.scrollY});function kX(e){let t;if(`el`in e){let n=e.el,r=typeof n==`string`&&n.startsWith(`#`),i=typeof n==`string`?r?document.getElementById(n.slice(1)):document.querySelector(n):n;if(!i)return;t=DX(i,e)}else t=e;`scrollBehavior`in document.documentElement.style?window.scrollTo(t):window.scrollTo(t.left==null?window.scrollX:t.left,t.top==null?window.scrollY:t.top)}function AX(e,t){return(history.state?history.state.position-t:-1)+e}var jX=new Map;function MX(e,t){jX.set(e,t)}function NX(e){let t=jX.get(e);return jX.delete(e),t}function PX(e){return typeof e==`string`||e&&typeof e==`object`}function FX(e){return typeof e==`string`||typeof e==`symbol`}function IX(e){let t={};if(e===``||e===`?`)return t;let n=(e[0]===`?`?e.slice(1):e).split(`&`);for(let e=0;ee&&sX(e)):[r&&sX(r)]).forEach(e=>{e!==void 0&&(t+=(t.length?`&`:``)+n,e!=null&&(t+=`=`+e))})}return t}function RX(e){let t={};for(let n in e){let r=e[n];r!==void 0&&(t[n]=Mr(r)?r.map(e=>e==null?null:``+e):r==null?r:``+r)}return t}function zX(){let e=[];function t(t){return e.push(t),()=>{let n=e.indexOf(t);n>-1&&e.splice(n,1)}}function n(){e=[]}return{add:t,list:()=>e.slice(),reset:n}}function BX(e,t,n,r,i,a=e=>e()){let o=r&&(r.enterCallbacks[i]=r.enterCallbacks[i]||[]);return()=>new Promise((s,c)=>{let l=e=>{e===!1?c(Rr(4,{from:n,to:t})):e instanceof Error?c(e):PX(e)?c(Rr(2,{from:t,to:e})):(o&&r.enterCallbacks[i]===o&&typeof e==`function`&&o.push(e),s())},u=a(()=>e.call(r&&r.instances[i],t,n,l)),d=Promise.resolve(u);e.length<3&&(d=d.then(l)),d.catch(e=>c(e))})}function VX(e,t,n,r,i=e=>e()){let a=[];for(let o of e)for(let e in o.components){let s=o.components[e];if(!(t!==`beforeRouteEnter`&&!o.instances[e])){if(zr(s)){let c=(s.__vccOpts||s)[t];c&&a.push(BX(c,n,r,o,e,i))}else{let c=s();a.push(()=>c.then(a=>{if(!a)throw Error(`Couldn't resolve component "${e}" at "${o.path}"`);let s=Er(a)?a.default:a;o.mods[e]=a,o.components[e]=s;let c=(s.__vccOpts||s)[t];return c&&BX(c,n,r,o,e,i)()}))}}}return a}function HX(e,t){let n=[],r=[],i=[],a=Math.max(t.matched.length,e.matched.length);for(let o=0;ovX(e,a))?r.push(a):n.push(a));let s=e.matched[o];s&&(t.matched.find(e=>vX(e,s))||i.push(s))}return[n,r,i]}var UX=()=>location.protocol+`//`+location.host;function WX(e,t){let{pathname:n,search:r,hash:i}=t,a=e.indexOf(`#`);if(a>-1){let t=i.includes(e.slice(a))?e.slice(a).length:1,n=i.slice(t);return n[0]!==`/`&&(n=`/`+n),gX(n,``)}return gX(n,e)+r+i}function GX(e,t,n,r){let i=[],a=[],o=null,s=({state:a})=>{let s=WX(e,location),c=n.value,l=t.value,u=0;if(a){if(n.value=s,t.value=a,o&&o===c){o=null;return}u=l?a.position-l.position:0}else r(s);i.forEach(e=>{e(n.value,c,{delta:u,type:`pop`,direction:u?u>0?`forward`:`back`:``})})};function c(){o=n.value}function l(e){i.push(e);let t=()=>{let t=i.indexOf(e);t>-1&&i.splice(t,1)};return a.push(t),t}function u(){if(document.visibilityState===`hidden`){let{history:e}=window;if(!e.state)return;e.replaceState(Fr({},e.state,{scroll:OX()}),``)}}function d(){for(let e of a)e();a=[],window.removeEventListener(`popstate`,s),window.removeEventListener(`pagehide`,u),document.removeEventListener(`visibilitychange`,u)}return window.addEventListener(`popstate`,s),window.addEventListener(`pagehide`,u),document.addEventListener(`visibilitychange`,u),{pauseListeners:c,listen:l,destroy:d}}function KX(e,t,n,r=!1,i=!1){return{back:e,current:t,forward:n,replaced:r,position:window.history.length,scroll:i?OX():null}}function qX(e){let{history:t,location:n}=window,r={value:WX(e,n)},i={value:t.state};i.value||a(r.value,{back:null,current:r.value,forward:null,position:t.length-1,replaced:!0,scroll:null},!0);function a(r,a,o){let s=e.indexOf(`#`),c=s>-1?(n.host&&document.querySelector(`base`)?e:e.slice(s))+r:UX()+e+r;try{t[o?`replaceState`:`pushState`](a,``,c),i.value=a}catch(e){console.error(e),n[o?`replace`:`assign`](c)}}function o(e,n){a(e,Fr({},t.state,KX(i.value.back,e,i.value.forward,!0),n,{position:i.value.position}),!0),r.value=e}function s(e,n){let o=Fr({},i.value,t.state,{forward:e,scroll:OX()});a(o.current,o,!0),a(e,Fr({},KX(r.value,e,null),{position:o.position+1},n),!1),r.value=e}return{location:r,state:i,push:s,replace:o}}function JX(e){e=wX(e);let t=qX(e),n=GX(e,t.state,t.location,t.replace);function r(e,t=!0){t||n.pauseListeners(),history.go(e)}let i=Fr({location:``,base:e,go:r,createHref:EX.bind(null,e)},t,n);return Object.defineProperty(i,"location",{enumerable:!0,get:()=>t.location.value}),Object.defineProperty(i,"state",{enumerable:!0,get:()=>t.state.value}),i}var YX={type:0,value:``},XX=/[a-zA-Z0-9_]/;function ZX(e){if(!e)return[[]];if(e===`/`)return[[YX]];if(!e.startsWith(`/`))throw Error(`Invalid path "${e}"`);function t(e){throw Error(`ERR (${n})/"${l}": ${e}`)}let n=0,r=n,i=[],a;function o(){a&&i.push(a),a=[]}let s=0,c,l=``,u=``;function d(){l&&=(n===0?a.push({type:0,value:l}):n===1||n===2||n===3?(a.length>1&&(c===`*`||c===`+`)&&t(`A repeatable param (${l}) must be alone in its segment. eg: '/:ids+.`),a.push({type:1,value:l,regexp:u,repeatable:c===`*`||c===`+`,optional:c===`*`||c===`?`})):t(`Invalid state to consume buffer`),``)}function f(){l+=c}for(;st.length?t.length===1&&t[0]===80?1:-1:0}function rZ(e,t){let n=0,r=e.score,i=t.score;for(;n0&&t[t.length-1]<0}var aZ={strict:!1,end:!0,sensitive:!1};function oZ(e,t,n){let r=tZ(ZX(e.path),n),i=Fr(r,{record:e,parent:t,children:[],alias:[]});return t&&!i.record.aliasOf==!t.record.aliasOf&&t.children.push(i),i}function sZ(e,t){let n=[],r=new Map;t=Nr(aZ,t);function i(e){return r.get(e)}function a(e,n,r){let i=!r,s=lZ(e);s.aliasOf=r&&r.record;let l=Nr(t,e),u=[s];if(`alias`in e){let t=typeof e.alias==`string`?[e.alias]:e.alias;for(let e of t)u.push(lZ(Fr({},s,{components:r?r.record.components:s.components,path:e,aliasOf:r?r.record:s})))}let d,f;for(let t of u){let{path:u}=t;if(n&&u[0]!==`/`){let e=n.record.path,r=e[e.length-1]===`/`?``:`/`;t.path=n.record.path+(u&&r+u)}if(d=oZ(t,n,l),r?r.alias.push(d):(f||=d,f!==d&&f.alias.push(d),i&&e.name&&!dZ(d)&&o(e.name)),hZ(d)&&c(d),s.children){let e=s.children;for(let t=0;t{o(f)}:Vr}function o(e){if(FX(e)){let t=r.get(e);t&&(r.delete(e),n.splice(n.indexOf(t),1),t.children.forEach(o),t.alias.forEach(o))}else{let t=n.indexOf(e);t>-1&&(n.splice(t,1),e.record.name&&r.delete(e.record.name),e.children.forEach(o),e.alias.forEach(o))}}function s(){return n}function c(e){let t=pZ(e,n);n.splice(t,0,e),e.record.name&&!dZ(e)&&r.set(e.record.name,e)}function l(e,t){let i,a={},o,s;if(`name`in e&&e.name){if(i=r.get(e.name),!i)throw Rr(1,{location:e});s=i.record.name,a=Fr(cZ(t.params,i.keys.filter(e=>!e.optional).concat(i.parent?i.parent.keys.filter(e=>e.optional):[]).map(e=>e.name)),e.params&&cZ(e.params,i.keys.map(e=>e.name))),o=i.stringify(a)}else if(e.path!=null)o=e.path,i=n.find(e=>e.re.test(o)),i&&(a=i.parse(o),s=i.record.name,i.keys.forEach(e=>{e.optional&&!a[e.name]&&delete a[e.name]}));else{if(i=t.name?r.get(t.name):n.find(e=>e.re.test(t.path)),!i)throw Rr(1,{location:e,currentLocation:t});s=i.record.name,a=Fr({},t.params,e.params),o=i.stringify(a)}let c=[],l=i;for(;l;)c.unshift(l.record),l=l.parent;return{name:s,path:o,params:a,matched:c,meta:fZ(c)}}e.forEach(e=>a(e));function u(){n.length=0,r.clear()}return{addRoute:a,resolve:l,removeRoute:o,clearRoutes:u,getRoutes:s,getRecordMatcher:i}}function cZ(e,t){let n={};for(let r of t)r in e&&(n[r]=e[r]);return n}function lZ(e){let t={path:e.path,redirect:e.redirect,name:e.name,meta:e.meta||{},aliasOf:e.aliasOf,beforeEnter:e.beforeEnter,props:uZ(e),children:e.children||[],instances:{},leaveGuards:new Set,updateGuards:new Set,enterCallbacks:{},components:`components`in e?e.components||null:e.component&&{default:e.component}};return Object.defineProperty(t,"mods",{value:{}}),t}function uZ(e){let t={},n=e.props||!1;if(`component`in e)t.default=n;else for(let r in e.components)t[r]=typeof n==`object`?n[r]:n;return t}function dZ(e){for(;e;){if(e.record.aliasOf)return!0;e=e.parent}return!1}function fZ(e){return e.reduce((e,t)=>Fr(e,t.meta),{})}function pZ(e,t){let n=0,r=t.length;for(;n!==r;){let i=n+r>>1;rZ(e,t[i])<0?r=i:n=i+1}let i=mZ(e);return i&&(r=t.lastIndexOf(i,r-1)),r}function mZ(e){let t=e;for(;t=t.parent;)if(hZ(t)&&rZ(e,t)===0)return t}function hZ({record:e}){return!!(e.name||e.components&&Object.keys(e.components).length||e.redirect)}function gZ(e){let t=C(kr),n=C(Or),r=a(()=>{let n=b(e.to);return t.resolve(n)}),i=a(()=>{let{matched:e}=r.value,{length:t}=e,i=e[t-1],a=n.matched;if(!i||!a.length)return-1;let o=a.findIndex(vX.bind(null,i));if(o>-1)return o;let s=xZ(e[t-2]);return t>1&&xZ(i)===s&&a[a.length-1].path!==s?a.findIndex(vX.bind(null,e[t-2])):o}),o=a(()=>i.value>-1&&bZ(n.params,r.value.params)),s=a(()=>i.value>-1&&i.value===n.matched.length-1&&yX(n.params,r.value.params));function c(n={}){if(yZ(n)){let n=t[b(e.replace)?`replace`:`push`](b(e.to)).catch(Vr);return e.viewTransition&&typeof document<`u`&&`startViewTransition`in document&&document.startViewTransition(()=>n),n}return Promise.resolve()}return{route:r,href:a(()=>r.value.href),isActive:o,isExactActive:s,navigate:c}}function _Z(e){return e.length===1?e[0]:e}var vZ=d({name:`RouterLink`,compatConfig:{MODE:3},props:{to:{type:[String,Object],required:!0},replace:Boolean,activeClass:String,exactActiveClass:String,custom:Boolean,ariaCurrentValue:{type:String,default:`page`},viewTransition:Boolean},useLink:gZ,setup(e,{slots:t}){let n=k(gZ(e)),{options:r}=C(kr),i=a(()=>({[SZ(e.activeClass,r.linkActiveClass,`router-link-active`)]:n.isActive,[SZ(e.exactActiveClass,r.linkExactActiveClass,`router-link-exact-active`)]:n.isExactActive}));return()=>{let r=t.default&&_Z(t.default(n));return e.custom?r:le(`a`,{"aria-current":n.isExactActive?e.ariaCurrentValue:null,href:n.href,onClick:n.navigate,class:i.value},r)}}});function yZ(e){if(!(e.metaKey||e.altKey||e.ctrlKey||e.shiftKey)&&!e.defaultPrevented&&(e.button===void 0||e.button===0)){if(e.currentTarget&&e.currentTarget.getAttribute){let t=e.currentTarget.getAttribute(`target`);if(/\b_blank\b/i.test(t))return}return e.preventDefault&&e.preventDefault(),!0}}function bZ(e,t){for(let n in t){let r=t[n],i=e[n];if(typeof r==`string`){if(r!==i)return!1}else if(!Mr(i)||i.length!==r.length||r.some((e,t)=>e.valueOf()!==i[t].valueOf()))return!1}return!0}function xZ(e){return e?e.aliasOf?e.aliasOf.path:e.path:``}var SZ=(e,t,n)=>e??t??n,CZ=d({name:`RouterView`,inheritAttrs:!1,props:{name:{type:String,default:`default`},route:Object},compatConfig:{MODE:3},setup(t,{attrs:n,slots:r}){let i=C(Lr),o=a(()=>t.route||i.value),s=C(Ar,0),c=a(()=>{let e=b(s),{matched:t}=o.value,n;for(;(n=t[e])&&!n.components;)e++;return e}),l=a(()=>o.value.matched[c.value]);e(Ar,a(()=>c.value+1)),e(Dr,l),e(Lr,o);let u=W();return H(()=>[u.value,l.value,t.name],([e,t,n],[r,i,a])=>{t&&(t.instances[n]=e,i&&i!==t&&e&&e===r&&(t.leaveGuards.size||(t.leaveGuards=i.leaveGuards),t.updateGuards.size||(t.updateGuards=i.updateGuards))),e&&t&&(!i||!vX(t,i)||!r)&&(t.enterCallbacks[n]||[]).forEach(t=>t(e))},{flush:`post`}),()=>{let e=o.value,i=t.name,a=l.value,s=a&&a.components[i];if(!s)return wZ(r.default,{Component:s,route:e});let c=a.props[i],d=c?c===!0?e.params:typeof c==`function`?c(e):c:null,f=le(s,Fr({},d,n,{onVnodeUnmounted:e=>{e.component.isUnmounted&&(a.instances[i]=null)},ref:u}));return wZ(r.default,{Component:f,route:e})||f}}});function wZ(e,t){if(!e)return null;let n=e(t);return n.length===1?n[0]:n}var TZ=CZ;function EZ(e){let t=sZ(e.routes,e),n=e.parseQuery||IX,r=e.stringifyQuery||LX,i=e.history,a=zX(),o=zX(),s=zX(),c=M(CX),l=CX;WY&&e.scrollBehavior&&`scrollRestoration`in history&&(history.scrollRestoration=`manual`);let u=Br.bind(null,e=>``+e),d=Br.bind(null,uX),f=Br.bind(null,dX);function p(e,n){let r,i;return FX(e)?(r=t.getRecordMatcher(e),i=n):i=e,t.addRoute(i,r)}function m(e){let n=t.getRecordMatcher(e);n&&t.removeRoute(n)}function h(){return t.getRoutes().map(e=>e.record)}function g(e){return!!t.getRecordMatcher(e)}function _(e,a){if(a=Fr({},a||c.value),typeof e==`string`){let r=mX(n,e,a.path),o=t.resolve({path:r.path},a),s=i.createHref(r.fullPath);return Fr(r,o,{params:f(o.params),redirectedFrom:void 0,href:s})}let o;if(e.path!=null)o=Fr({},e,{path:mX(n,e.path,a.path).path});else{let t=Fr({},e.params);for(let e in t)t[e]??delete t[e];o=Fr({},e,{params:d(t)}),a.params=d(a.params)}let s=t.resolve(o,a),l=e.hash||``;s.params=u(f(s.params));let p=hX(r,Fr({},e,{hash:oX(l),path:s.path})),m=i.createHref(p);return Fr({fullPath:p,hash:l,query:r===LX?RX(e.query):e.query||{}},s,{redirectedFrom:void 0,href:m})}function v(e){return typeof e==`string`?mX(n,e,c.value.path):Fr({},e)}function y(e,t){if(l!==e)return Rr(8,{from:t,to:e})}function S(e){return T(e)}function C(e){return S(Fr(v(e),{replace:!0}))}function w(e,t){let n=e.matched[e.matched.length-1];if(n&&n.redirect){let{redirect:r}=n,i=typeof r==`function`?r(e,t):r;return typeof i==`string`&&(i=i.includes(`?`)||i.includes(`#`)?i=v(i):{path:i},i.params={}),Fr({query:e.query,hash:e.hash,params:i.path==null?e.params:{}},i)}}function T(e,t){let n=l=_(e),i=c.value,a=e.state,o=e.force,s=e.replace===!0,u=w(n,i);if(u)return T(Fr(v(u),{state:typeof u==`object`?Fr({},a,u.state):a,force:o,replace:s}),t||n);let d=n;d.redirectedFrom=t;let f;return!o&&_X(r,i,n)&&(f=Rr(16,{to:d,from:i}),z(i,i,!0,!1)),(f?Promise.resolve(f):O(d,i)).catch(e=>Ir(e)?Ir(e,2)?e:R(e):L(e,d,i)).then(e=>{if(e){if(Ir(e,2))return T(Fr({replace:s},v(e.to),{state:typeof e.to==`object`?Fr({},a,e.to.state):a,force:o}),t||d)}else e=A(d,i,!0,s,a);return k(d,i,e),e})}function E(e,t){let n=y(e,t);return n?Promise.reject(n):Promise.resolve()}function D(e){let t=V.values().next().value;return t&&typeof t.runWithContext==`function`?t.runWithContext(e):e()}function O(e,t){let n,[r,i,s]=HX(e,t);n=VX(r.reverse(),`beforeRouteLeave`,e,t);for(let i of r)i.leaveGuards.forEach(r=>{n.push(BX(r,e,t))});let c=E.bind(null,e,t);return n.push(c),re(n).then(()=>{n=[];for(let r of a.list())n.push(BX(r,e,t));return n.push(c),re(n)}).then(()=>{n=VX(i,`beforeRouteUpdate`,e,t);for(let r of i)r.updateGuards.forEach(r=>{n.push(BX(r,e,t))});return n.push(c),re(n)}).then(()=>{n=[];for(let r of s)if(r.beforeEnter){if(Mr(r.beforeEnter))for(let i of r.beforeEnter)n.push(BX(i,e,t));else n.push(BX(r.beforeEnter,e,t))}return n.push(c),re(n)}).then(()=>(e.matched.forEach(e=>e.enterCallbacks={}),n=VX(s,`beforeRouteEnter`,e,t,D),n.push(c),re(n))).then(()=>{n=[];for(let r of o.list())n.push(BX(r,e,t));return n.push(c),re(n)}).catch(e=>Ir(e,8)?e:Promise.reject(e))}function k(e,t,n){s.list().forEach(r=>D(()=>r(e,t,n)))}function A(e,t,n,r,a){let o=y(e,t);if(o)return o;let s=t===CX,l=WY?history.state:{};n&&(r||s?i.replace(e.fullPath,Fr({scroll:s&&l&&l.scroll},a)):i.push(e.fullPath,a)),c.value=e,z(e,t,n,s),R()}let j;function N(){j||=i.listen((e,t,n)=>{if(!ne.listening)return;let r=_(e),a=w(r,ne.currentRoute.value);if(a){T(Fr(a,{replace:!0,force:!0}),r).catch(Vr);return}l=r;let o=c.value;WY&&MX(AX(o.fullPath,n.delta),OX()),O(r,o).catch(e=>Ir(e,12)?e:Ir(e,2)?(T(Fr(v(e.to),{force:!0}),r).then(e=>{Ir(e,20)&&!n.delta&&n.type===`pop`&&i.go(-1,!1)}).catch(Vr),Promise.reject()):(n.delta&&i.go(-n.delta,!1),L(e,r,o))).then(e=>{e||=A(r,o,!1),e&&(n.delta&&!Ir(e,8)?i.go(-n.delta,!1):n.type===`pop`&&Ir(e,20)&&i.go(-1,!1)),k(r,o,e)}).catch(Vr)})}let P=zX(),F=zX(),I;function L(e,t,n){R(e);let r=F.list();return r.length?r.forEach(r=>r(e,t,n)):console.error(e),Promise.reject(e)}function ee(){return I&&c.value!==CX?Promise.resolve():new Promise((e,t)=>{P.add([e,t])})}function R(e){return I||(I=!e,N(),P.list().forEach(([t,n])=>e?n(e):t()),P.reset()),e}function z(t,n,r,i){let{scrollBehavior:a}=e;if(!WY||!a)return Promise.resolve();let o=!r&&NX(AX(t.fullPath,0))||(i||!r)&&history.state&&history.state.scroll||null;return x().then(()=>a(t,n,o)).then(e=>t===c.value&&e&&kX(e)).catch(e=>t===c.value&&L(e,t,n))}let B=e=>i.go(e),te,V=new Set,ne={currentRoute:c,listening:!0,addRoute:p,removeRoute:m,clearRoutes:t.clearRoutes,hasRoute:g,getRoutes:h,resolve:_,options:e,push:S,replace:C,go:B,back:()=>B(-1),forward:()=>B(1),beforeEach:a.add,beforeResolve:o.add,afterEach:s.add,onError:F.add,isReady:ee,install(e){e.component(`RouterLink`,vZ),e.component(`RouterView`,TZ),e.config.globalProperties.$router=ne,Object.defineProperty(e.config.globalProperties,"$route",{enumerable:!0,get:()=>b(c)}),WY&&!te&&c.value===CX&&(te=!0,S(i.location).catch(e=>{}));let t={};for(let e in CX)Object.defineProperty(t,e,{get:()=>c.value[e],enumerable:!0});e.provide(kr,ne),e.provide(Or,ce(t)),e.provide(Lr,c);let n=e.unmount;V.add(e),e.unmount=function(){V.delete(e),V.size<1&&(l=CX,j&&j(),j=null,c.value=CX,te=!1,I=!1),n()}}};function re(e){return e.reduce((e,t)=>e.then(()=>D(t)),Promise.resolve())}return ne}var DZ={key:0,class:`brand-copy`},OZ={key:0},kZ={class:`topbar-title`},AZ={class:`user-button`},jZ={class:`avatar`},MZ={class:`user-copy`},NZ=ne(d({__name:`AppLayout`,setup(e){let r=W(!1),i=W(!1),o=Pr(),c=jr(),l=an(),u=a(()=>o.path.startsWith(`/scenarios`)||o.path.startsWith(`/sops`)?[`scenarios`]:o.path.startsWith(`/execute`)?[`execute`]:o.path.startsWith(`/runs`)?[`runs`]:o.path.startsWith(`/members`)?[`members`]:[`dashboard`]),d={dashboard:`工作台`,scenarios:`场景与 SOP`,execute:`执行话术`,runs:`执行记录`,members:`企业成员`},f=a(()=>d[u.value[0]]||`销冠 SOP`),p=a(()=>({admin:`企业管理员`,editor:`SOP 编辑者`,operator:`一线执行者`})[l.user?.role_code||``]||l.user?.role_code||``);D(()=>l.loadUser().catch(()=>l.logout()));function m({key:e}){i.value=!1,c.push({dashboard:`/`,scenarios:`/scenarios`,execute:`/execute`,runs:`/runs`,members:`/members`}[e])}function v(){l.logout(),c.push(`/login`)}return(e,a)=>{let o=U(`a-menu-item`),c=U(`a-menu`),d=U(`a-layout-sider`),y=U(`a-button`),x=U(`a-dropdown`),S=U(`a-layout-header`),C=U(`router-view`),w=U(`a-layout-content`),T=U(`a-layout`),E=U(`a-drawer`);return _(),R(T,{class:`app-frame`},{default:z(()=>[s(d,{collapsed:r.value,"onUpdate:collapsed":a[0]||=e=>r.value=e,trigger:null,collapsible:``,width:224,class:`side-panel`},{default:z(()=>[h(`div`,{class:ue([`brand`,{compact:r.value}])},[a[5]||=h(`div`,{class:`brand-mark`},[h(`span`),h(`span`),h(`span`)],-1),r.value?t(``,!0):(_(),ee(`div`,DZ,[...a[4]||=[h(`strong`,null,`销冠 SOP`,-1),h(`small`,null,`经验执行系统`,-1)]]))],2),s(c,{mode:`inline`,theme:`dark`,"selected-keys":u.value,onClick:m},{default:z(()=>[s(o,{key:`dashboard`},{default:z(()=>[s(b(Zq)),a[6]||=h(`span`,null,`工作台`,-1)]),_:1}),b(l).can(`scenario.view`)?(_(),R(o,{key:`scenarios`},{default:z(()=>[s(b(br)),a[7]||=h(`span`,null,`场景与 SOP`,-1)]),_:1})):t(``,!0),b(l).can(`sop.execute`)?(_(),R(o,{key:`execute`},{default:z(()=>[s(b(wr)),a[8]||=h(`span`,null,`执行话术`,-1)]),_:1})):t(``,!0),b(l).can(`runs.view_all`)||b(l).can(`runs.view_own`)?(_(),R(o,{key:`runs`},{default:z(()=>[s(b(tJ)),a[9]||=h(`span`,null,`执行记录`,-1)]),_:1})):t(``,!0),b(l).can(`member.manage`)?(_(),R(o,{key:`members`},{default:z(()=>[s(b(Tr)),a[10]||=h(`span`,null,`企业成员`,-1)]),_:1})):t(``,!0)]),_:1},8,[`selected-keys`]),h(`div`,{class:ue([`sider-foot`,{compact:r.value}])},[a[11]||=h(`span`,{class:`online-dot`},null,-1),r.value?t(``,!0):(_(),ee(`span`,OZ,`服务运行正常`))],2)]),_:1},8,[`collapsed`]),s(T,null,{default:z(()=>[s(S,{class:`topbar`},{default:z(()=>[s(y,{type:`text`,class:`collapse-button desktop-nav-toggle`,"aria-label":r.value?`展开导航`:`收起导航`,onClick:a[1]||=e=>r.value=!r.value},{default:z(()=>[r.value?(_(),R(b(pJ),{key:0})):(_(),R(b(lJ),{key:1}))]),_:1},8,[`aria-label`]),s(y,{type:`text`,class:`collapse-button mobile-nav-toggle`,"aria-label":`打开导航`,onClick:a[2]||=e=>i.value=!0},{default:z(()=>[s(b(pJ))]),_:1}),h(`div`,kZ,n(f.value),1),s(x,{placement:`bottomRight`},{overlay:z(()=>[s(c,null,{default:z(()=>[s(o,{key:`logout`,onClick:v},{default:z(()=>[s(b(aJ)),a[12]||=g(` 退出登录`,-1)]),_:1})]),_:1})]),default:z(()=>[h(`button`,AZ,[h(`span`,jZ,n((b(l).user?.display_name||`管`).slice(0,1)),1),h(`span`,MZ,[h(`strong`,null,n(b(l).user?.display_name||`平台管理员`),1),h(`small`,null,n(p.value),1)])])]),_:1})]),_:1}),s(w,{class:`content-area`},{default:z(()=>[s(C)]),_:1})]),_:1}),s(E,{open:i.value,"onUpdate:open":a[3]||=e=>i.value=e,placement:`left`,width:280,closable:!1,class:`mobile-nav-drawer`},{default:z(()=>[a[18]||=h(`div`,{class:`mobile-brand`},[h(`div`,{class:`brand-mark`},[h(`span`),h(`span`),h(`span`)]),h(`div`,{class:`brand-copy`},[h(`strong`,null,`销冠 SOP`),h(`small`,null,`经验执行系统`)])],-1),s(c,{mode:`inline`,theme:`dark`,"selected-keys":u.value,onClick:m},{default:z(()=>[s(o,{key:`dashboard`},{default:z(()=>[s(b(Zq)),a[13]||=h(`span`,null,`工作台`,-1)]),_:1}),b(l).can(`scenario.view`)?(_(),R(o,{key:`scenarios`},{default:z(()=>[s(b(br)),a[14]||=h(`span`,null,`场景与 SOP`,-1)]),_:1})):t(``,!0),b(l).can(`sop.execute`)?(_(),R(o,{key:`execute`},{default:z(()=>[s(b(wr)),a[15]||=h(`span`,null,`执行话术`,-1)]),_:1})):t(``,!0),b(l).can(`runs.view_all`)||b(l).can(`runs.view_own`)?(_(),R(o,{key:`runs`},{default:z(()=>[s(b(tJ)),a[16]||=h(`span`,null,`执行记录`,-1)]),_:1})):t(``,!0),b(l).can(`member.manage`)?(_(),R(o,{key:`members`},{default:z(()=>[s(b(Tr)),a[17]||=h(`span`,null,`企业成员`,-1)]),_:1})):t(``,!0)]),_:1},8,[`selected-keys`])]),_:1},8,[`open`])]),_:1})}}}),[[`__scopeId`,`data-v-9d064ef8`]]),PZ=`modulepreload`,FZ=function(e){return`/`+e},IZ={},LZ=function(e,t,n){let r=Promise.resolve();if(t&&t.length>0){let e=document.getElementsByTagName(`link`),i=document.querySelector(`meta[property=csp-nonce]`),a=i?.nonce||i?.getAttribute(`nonce`);function o(e){return Promise.all(e.map(e=>Promise.resolve(e).then(e=>({status:`fulfilled`,value:e}),e=>({status:`rejected`,reason:e}))))}function s(e){return import.meta.resolve?import.meta.resolve(e):new URL(e,import.meta.url).href}r=o(t.map(t=>{if(t=FZ(t,n),t=s(t),t in IZ)return;IZ[t]=!0;let r=t.endsWith(`.css`);for(let n=e.length-1;n>=0;n--){let i=e[n];if(i.href===t&&(!r||i.rel===`stylesheet`))return}let i=document.createElement(`link`);if(i.rel=r?`stylesheet`:PZ,r||(i.as=`script`),i.crossOrigin=``,i.href=t,a&&i.setAttribute(`nonce`,a),document.head.appendChild(i),r)return new Promise((e,n)=>{i.addEventListener(`load`,e),i.addEventListener(`error`,()=>n(Error(`Unable to preload CSS for ${t}`)))})}))}function i(e){let t=new Event(`vite:preloadError`,{cancelable:!0});if(t.payload=e,window.dispatchEvent(t),!t.defaultPrevented)throw e}return r.then(t=>{for(let e of t||[])e.status===`rejected`&&i(e.reason);return e().catch(i)})},RZ=EZ({history:JX(),routes:[{path:`/login`,component:()=>LZ(()=>import(`./LoginView-DMG0bZF-.js`),__vite__mapDeps([0,1,2,3,4,5])),meta:{public:!0}},{path:`/`,component:NZ,children:[{path:``,name:`dashboard`,component:()=>LZ(()=>import(`./DashboardView-Vhr2bwL8.js`),__vite__mapDeps([6,1,3,7,8,9,4,10]))},{path:`scenarios`,name:`scenarios`,component:()=>LZ(()=>import(`./ScenariosView-BYT1rTBj.js`),__vite__mapDeps([11,1,2,3,12,7,4,13]))},{path:`scenarios/:id`,name:`scenario-detail`,component:()=>LZ(()=>import(`./ScenarioDetailView-svKKSu2G.js`),__vite__mapDeps([14,1,2,3,15,7,16,17,18,19,4,20]))},{path:`sops/:id`,name:`sop-editor`,component:()=>LZ(()=>import(`./SOPEditorView-CNOWYqSp.js`),__vite__mapDeps([21,1,2,3,15,7,16,17,19,4,22]))},{path:`execute`,name:`execute`,component:()=>LZ(()=>import(`./ExecuteView-DJveuZjr.js`),__vite__mapDeps([23,1,2,15,24,9,25,4,26]))},{path:`runs`,name:`runs`,component:()=>LZ(()=>import(`./RunHistoryView-Dh9SlbUl.js`),__vite__mapDeps([27,1,2,3,28,9,4,29]))},{path:`runs/:id`,name:`run-detail`,component:()=>LZ(()=>import(`./RunDetailView-q8rVi8Ga.js`),__vite__mapDeps([30,1,2,3,16,25,4,31]))},{path:`members`,name:`members`,component:()=>LZ(()=>import(`./MembersView-CJIp3zFH.js`),__vite__mapDeps([32,1,2,3,7,18,33,34]))}]}]});RZ.beforeEach(e=>{if(!e.meta.public&&!localStorage.getItem(`access_token`))return`/login`;if(e.path===`/login`&&localStorage.getItem(`access_token`))return`/`}),zt(UY).use(rn()).use(RZ).use(BY).mount(`#app`); \ No newline at end of file diff --git a/web/dist/index.html b/web/dist/index.html index 52ec333..4f8d245 100644 --- a/web/dist/index.html +++ b/web/dist/index.html @@ -5,7 +5,7 @@ 销冠 SOP 平台 - + diff --git a/web/src/types/index.ts b/web/src/types/index.ts index 4b1fa07..a53194a 100644 --- a/web/src/types/index.ts +++ b/web/src/types/index.ts @@ -2,9 +2,7 @@ export interface BaseEntity { id: number; created_at: string; updated_at: string export interface User { user_id: number; tenant_id: number; role_code: string; permissions: string[]; username: string; display_name: string } export interface Scenario extends BaseEntity { tenant_id: number; scenario_key:string; public_key:string; allowed_origins:string[]; name: string; industry: string; role_name: string; goal: string; trigger_text: string; visibility: string; status: string; created_by: number; input_schema:Record; output_schema:Record; result_schema:Record } export interface ScenarioField extends BaseEntity { scenario_id: number; field_key: string; field_name: string; source_path:string; field_type: string; required: boolean; options: unknown[]; validation: Record; sort_order: number } -export interface SOP extends BaseEntity { scenario_id: number; name: string; description: string; status: string } -export interface KnowledgeCopy { id:string; title:string; content:string } -export interface KnowledgeSnapshot { card_id:number; card_version_id:number; version:number; title:string; standard_copy:string; forbidden_copy:string; risk_note:string; copies:KnowledgeCopy[] } +export interface SOP extends BaseEntity { scenario_id: number; name: string; description: string; status: string; start_node_key?: string } export interface KnowledgeItemView { key:string; name:string; type:string; content:Record } export interface KnowledgeGroup extends KnowledgeItemView { relations:Record; suggested?:boolean } export interface PublicFieldView { key:string; name:string; type:string; required:boolean; options:string[]; validation:Record } @@ -13,10 +11,10 @@ export interface KnowledgeCollectionStep { field_key:string; name:string; requir export interface KnowledgeCollection { context_fields:PublicFieldView[]; context_title?:string; context_hint?:string; selection_title?:string; selection_hint?:string; steps:KnowledgeCollectionStep[] } export interface PresentationField { key:string; label:string; kind:'text'|'image'; value:unknown } export interface NodePresentation { summary:PresentationField[]; items:Array<{fields:PresentationField[]}>; opening?:{title:string; content:string} } -export interface SOPNode extends BaseEntity { node_key: string; type: string; title: string; content: string; config: Record; position_x: number; position_y: number; presentation?:NodePresentation; knowledge?:KnowledgeSnapshot; outputs?:KnowledgeGroup[]; collection?:KnowledgeCollection } +export interface SOPNode extends BaseEntity { node_key: string; type: string; title: string; content: string; config: Record; position_x: number; position_y: number; presentation?:NodePresentation; outputs?:KnowledgeGroup[]; collection?:KnowledgeCollection } export interface SOPEdge extends BaseEntity { source_node_key: string; target_node_key: string; condition: Record; priority: number } -export interface SOPRun extends BaseEntity { sop_id: number; sop_version_id: number; operator_id:number; external_ref?:string; current_node_key: string; status: string; answers: Record; input:Record; derived:Record; outputs:unknown[]; result: string; final_result?:Record|null; started_at: string; completed_at?: string; sop_name?: string; scenario_name?:string; operator_name?:string } -export interface RunEvent extends BaseEntity { run_id:number; node_key:string; action:string; payload:Record; node_title:string; node_type:string; node_content:string; knowledge?:KnowledgeSnapshot; outputs?:KnowledgeGroup[] } +export interface SOPRun extends BaseEntity { sop_id: number; operator_id:number; external_ref?:string; current_node_key: string; status: string; answers: Record; input:Record; derived:Record; outputs:unknown[]; result: string; final_result?:Record|null; started_at: string; completed_at?: string; sop_name?: string; scenario_name?:string; operator_name?:string } +export interface RunEvent extends BaseEntity { run_id:number; node_key:string; action:string; payload:Record; node_title:string; node_type:string; node_content:string; outputs?:KnowledgeGroup[] } export interface RunFeedback extends BaseEntity { run_id:number; user_id:number; score:number; comment:string; user_name:string } export interface RunDetail extends SOPRun { scenario_name:string; operator_name:string } export interface Role extends BaseEntity { name:string; code:string; permissions:string[] } diff --git a/web/src/views/ExecuteView.vue b/web/src/views/ExecuteView.vue index 7c3f4e0..42d3ff8 100644 --- a/web/src/views/ExecuteView.vue +++ b/web/src/views/ExecuteView.vue @@ -125,13 +125,6 @@ onMounted(load)

{{ startPresentation.opening.content }}

-
-
{{ active.node.knowledge.title }}历史知识
-
{{ copy.title }}

{{ copy.content }}

-
标准话术

{{ active.node.knowledge.standard_copy }}

-
禁用表达

{{ active.node.knowledge.forbidden_copy }}

-
风险提醒

{{ active.node.knowledge.risk_note }}

-
{{ group.name }}{{ group.name }}{{ group.suggested?'系统推断':group.type }}
@@ -180,7 +173,7 @@ onMounted(load)