1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
use df_fields::Field;
use json::{JsonValue, object};
use crate::dict::flow::add::Add;
use crate::dict::flow::delete::Delete;
use crate::dict::flow::disable::Disable;
use crate::dict::flow::edit::Edit;
use crate::dict::flow::enable::Enable;
use crate::dict::flow::select::Select;
use crate::dict::flow::table::Table;
use crate::{Action, actions, Model};

pub struct Flow {}

impl Model for Flow {
    fn title(&mut self) -> &'static str { "流程节点" }
    fn table(&mut self) -> &'static str { "dict_flow" }
    fn unique(&mut self) -> Vec<&'static str> {
        vec!["code"]
    }
    fn index(&mut self) -> Vec<Vec<&'static str>> {
        vec![
            vec!["name"],
            vec!["code"],
        ]
    }
    fn fields(&mut self) -> JsonValue {
        let mut fields = object! {};
        fields[self.primary_key()] = df_fields::str::Key::new(true, self.primary_key(), "ID", 20).field();
        fields["name"] = df_fields::str::Str::new(true, "name", "流程名称", 50, "").field();
        fields["code"] = df_fields::str::Str::new(true, "code", "流程编号", 20, "").field();
        fields["note"] = df_fields::text::Text::new(false, "note", "备注", "").field();
        fields["state"] = df_fields::select::Radio::new(true, "state", "状态", vec!["启用", "禁用"], "启用").field();
        return fields;
    }
    fn action(&mut self, name: &str) -> Box<dyn Action> {
        match name {
            "table" => Box::new(Table { model: Flow {} }),
            "add" => Box::new(Add { model: Flow {} }),
            "select" => Box::new(Select { model: Flow {} }),

            "delete" => Box::new(Delete { model: Flow {} }),
            "edit" => Box::new(Edit { model: Flow {} }),
            "disable" => Box::new(Disable { model: Flow {} }),
            "enable" => Box::new(Enable { model: Flow {} }),
            _ => actions(name)
        }
    }
}

pub mod table;
pub mod add;
pub mod select;
pub mod delete;
pub mod edit;
pub mod disable;
pub mod enable;