ap-dev 1.1.12 → 1.1.16

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -66,9 +66,12 @@ const menus = [
66
66
  }, {
67
67
  id: 'ApiIconList',
68
68
  label: '4.3 Icon 图标'
69
+ }, {
70
+ id: 'ApiVueUtils',
71
+ label: '4.4 常用工具类'
69
72
  }, {
70
73
  id: 'ApiOtherVue',
71
- label: '4.4 其他'
74
+ label: '4.5 其他'
72
75
  }]
73
76
  }, {
74
77
  id: 'ApiDefault',
@@ -271,7 +271,7 @@ toolbarBtn: ["add", "edit", "del", "cancel", "refresh", "save", "separator",
271
271
  default: '无',
272
272
  memo: '添加行时对象的默认值。<br>一对象:默认值。<br>二、方法:()方法返回默认值<br><span class="api-memo">注:和列的addDefaultValue效果相同,主要处理页面不需要显示的字段的默认值。</span>',
273
273
  code: '<span class="api-code">// 1、对象形式:添加行的fdDeleted默认为0 <br>addDefaultObj: {fdDeleted:0}' +
274
- '<br>// 2、方法形式:动态返回添加行的默认值 <br>addDefaultObj: () => {fdDeleted:0}</span>'
274
+ '<br>// 2、方法形式:动态返回添加行的默认值 <br>addDefaultObj: () => { return {fdDeleted:0} }</span>'
275
275
  }
276
276
  ]
277
277
  const gridAttrData_col = [
@@ -21,6 +21,7 @@ import ApiListUtil from './../tabs/ApiListUtil'
21
21
  import ApiStringUtil from './../tabs/ApiStringUtil'
22
22
  import ApiQyWxUtil from './../tabs/ApiQyWxUtil'
23
23
  import ApiJavaCommonUtil from './../tabs/ApiJavaCommonUtil'
24
+ import ApiWebSocketUtil from './../tabs/ApiWebSocketUtil'
24
25
 
25
26
  export default {
26
27
  name: "ApiJavaUtils",
@@ -37,6 +38,7 @@ export default {
37
38
  ApiStringUtil,
38
39
  ApiQyWxUtil,
39
40
  ApiJavaCommonUtil,
41
+ ApiWebSocketUtil
40
42
  },
41
43
  data() {
42
44
  let opts = [
@@ -76,6 +78,9 @@ export default {
76
78
  }, {
77
79
  label: 'CacheUtil',
78
80
  component: 'ApiCacheUtil',
81
+ },{
82
+ label: 'WebSocketUtil',
83
+ component: 'ApiWebSocketUtil',
79
84
  },
80
85
  ];
81
86
  return {
@@ -0,0 +1,48 @@
1
+ <template>
2
+ <el-tabs v-model="activeName" tabPosition="left" class="api-tabs">
3
+ <template v-for="(item,index) in opts">
4
+ <el-tab-pane :label="item.label" :name="'tab' + index" class="api-tab">
5
+ <component :is="item.component"></component>
6
+ </el-tab-pane>
7
+ </template>
8
+ </el-tabs>
9
+ </template>
10
+
11
+ <script>
12
+ import ApiVueDateUtil from './../tabs/ApiVueDateUtil'
13
+ import ApiVueWebSocketUtil from './../tabs/ApiVueWebSocketUtil'
14
+
15
+ export default {
16
+ name: "ApiJavaUtils",
17
+ components: {
18
+ ApiVueDateUtil,
19
+ ApiVueWebSocketUtil,
20
+ },
21
+ data() {
22
+ let opts = [
23
+ {
24
+ label: "DateUtil",
25
+ component: "ApiVueDateUtil"
26
+ }, {
27
+ label: "WebSocketUtil",
28
+ component: "ApiVueWebSocketUtil"
29
+ }
30
+ ];
31
+ return {
32
+ activeName: 'tab0',
33
+ opts: opts
34
+ }
35
+ }
36
+ }
37
+ </script>
38
+
39
+ <style scoped>
40
+ .api-tabs {
41
+ display: flex;
42
+ height: 100%;
43
+ }
44
+ .api-tabs /deep/ .el-tabs__content {
45
+ flex: 1;
46
+ overflow: scroll;
47
+ }
48
+ </style>
@@ -8,24 +8,32 @@
8
8
  1、后端代码生成:***TF<br>
9
9
  <br>
10
10
  2、组装sql<br>
11
- <div class="api-code">ApSql sql = new ApSql();<br>
12
- sql.select(TDemoTF.fdName,TDemoTypeTF.fdName)<br>
13
- .from(TDemoTF.TDemo)<br>
14
- .leftJoin(TDemoTypeTF.TDemoType)<br>
15
- .on(TDemoTF.fdTypeId.eq(TDemoTypeTF.fdId))<br>
16
- .where(TDemoTF.fdName.like("张%"))<br>
17
- .and(TDemoTF.fdDisabled.eq(1))<br>
18
- .orderBy(TDemoTF.fdName);</div>
11
+ <div class="api-code">
12
+ TDemoTF t1 = new TDemoTF();<br>
13
+ TDemoTypeTF t2 = new TDemoTypeTF();<br><br>
14
+ ApSql sql = new ApSql();<br>
15
+ sql.select(t1.fdName,t2.fdName)<br>
16
+ .from(t1.TDemo)<br>
17
+ .leftJoin(t2.TDemoType)<br>
18
+ .on(t1.fdTypeId.eq(t2.fdId))<br>
19
+ .where(t1.fdName.like("张%"))<br>
20
+ .and(t1.fdDisabled.eq(1))<br>
21
+ .orderBy(t1.fdName);</div>
19
22
  <br>
20
23
  3、执行sql:可返回四种类型的结果<br>
21
24
  <div class="api-code">
22
25
  // 1、返回 HashMap 类型的list<br>
23
26
  List&lt;HashMap> list1 = sql.execute();<br><br>
24
- // 2、返回指定对象类型的list<br>
27
+ // 2、返回 HashMap 类型的list;分页处理<br>
28
+ // 参数:PageParam pp<br>
29
+ List&lt;HashMap> list1 = sql.execute(pp);<br><br>
30
+ // 3、返回指定对象类型的list<br>
25
31
  List&lt;TDemo> list2 = sql.execute(TDemo.class);<br><br>
26
- // 3、返回 HashMap (只需返回一条数据)<br>
32
+ // 4、返回指定对象类型的list;分页<br>
33
+ List&lt;TDemo> list2 = sql.execute(pp, TDemo.class);<br><br>
34
+ // 5、返回 HashMap (只需返回一条数据)<br>
27
35
  HashMap obj2 = sql.executeOne();<br><br>
28
- // 4、返回 指定对象 (只需返回一条数据)<br>
36
+ // 6、返回 指定对象 (只需返回一条数据)<br>
29
37
  TDemo obj1 = sql.executeOne(TDemo.class);<br></div>
30
38
  <br><br>
31
39
  复杂sql示例:<br>
@@ -40,12 +48,13 @@
40
48
  <api-content>
41
49
  1、默认别名:t1、t2、...。<br>
42
50
  默认添加bean属性名称。eg:t1.fd_name as fdName<br><br>
43
- 2、自定义别名:【.as("****")】<br>
51
+ 2、自定义别名:new TxxxTF("别名")<br>
44
52
  <div class="api-code">// 例:同一个表,在SQL中多次使用时需要自定义别名。<br>
45
- .from(TDemoTF.TDemo)<br>
46
- .leftJoin(TDemoTF.TDemo.as("d"))<br></div>
53
+ TDemoTF t1 = new TDemoTF("a1");<br>
54
+ TDemoTF t2 = new TDemoTF("a2");<br>
55
+ </div>
47
56
  <br>
48
- <span class="api-memo">注:通常使用默认别名即可。如果自定义别名,表相应字段都需要自定义表别名。</span>
57
+ <span class="api-memo">注:通常使用默认别名即可。如果自定义别名,不能使用t1、t2、...防止冲突。</span>
49
58
  </api-content>
50
59
  <api-tittle2>
51
60
  三、通用说明:字段别名(select时使用)
@@ -54,19 +63,19 @@
54
63
  1、默认bean属性名称:"as 属性名"<br>
55
64
  <div class="api-code">
56
65
  // select t1.fd_name as fdName<br>
57
- .select(TDemoTF.fdName)
66
+ .select(t1.fdName)
58
67
  </div>
59
68
  <br>
60
69
  2、存在函数时,默认添加f*:"as f*"<br>
61
70
  <div class="api-code">
62
71
  // select count(t1.fd_name) as f1<br>
63
- .select(count(TDemoTF.fdName))
72
+ .select(count(t1.fdName))
64
73
  </div>
65
74
  <br>
66
75
  3、自定义别名:.as("****")<br>
67
76
  <div class="api-code">
68
77
  // select t1.fd_name as name<br>
69
- .select(TDemoTF.fdName.as("name"))
78
+ .select(t1.fdName.as("name"))
70
79
  </div>
71
80
  </api-content>
72
81
  <api-tittle2>
@@ -76,13 +85,13 @@
76
85
  1、字段和字段:<br>
77
86
  <div class="api-code">
78
87
  // t1.fd_name= t2.fd_name<br>
79
- TDemo1TF.fdName.eq(TDemo2TF.fdName)
88
+ t1.fdName.eq(t2.fdName)
80
89
  </div>
81
90
  <br>
82
91
  2、字段和参数,默认添加f*:"as f*"<br>
83
92
  <div class="api-code">
84
93
  // t1.fd_name= '张三'<br>
85
- TDemo1TF.fdName.eq("张三")
94
+ t1.fdName.eq("张三")
86
95
  </div>
87
96
  <br>
88
97
  </api-content>
@@ -95,9 +104,9 @@
95
104
  // 例:select count(f1.fd_name)<br><br>
96
105
  // 方式1(推荐):顶部import 静态方法<br>
97
106
  import static com.ap.sql.ASL.count;<br>
98
- .select(count(TDemoTF.fdName))<br><br>
107
+ .select(count(t1.fdName))<br><br>
99
108
  // 方式2:直接调用<br>
100
- .select(ASL.count(TDemoTF.fdName))
109
+ .select(ASL.count(t1.fdName))
101
110
  </div>
102
111
  <br>
103
112
  </api-content>
@@ -130,19 +139,22 @@ order by
130
139
 
131
140
 
132
141
  // ApSql构造
142
+ TDemoTF t1 = new TDemoTF();
143
+ TDemoTypeTF t2 = new TDemoTypeTF();
144
+
133
145
  ApSql sql = new ApSql();
134
- sql.select(TDemoTF.fdName,
135
- substring(TDemoTF.fdName, 1 ,2),
136
- TDemoTypeTF.fdName,
146
+ sql.select(t1.fdName,
147
+ substring(t1.fdName, 1 ,2),
148
+ t2.fdName,
137
149
  custom('lower(t1.fd_en_name) as fdEnName'))
138
- .from(TDemoTF.TDemo)
139
- .leftJoin(TDemoTypeTF.TDemoType)
140
- .on(TDemoTF.fdTypeId.eq(TDemoTypeTF.fdId))
141
- .where(TDemoTF.fdDate.lt(date_format('2021-11-08', 'Y-%m-%d')))
142
- .andPartStart(TDemoTF.fdName.like( "张%"))
143
- .and(TDemoTF.fdName.like( "李%"))
150
+ .from(t1.TDemo)
151
+ .leftJoin(t2.TDemoType)
152
+ .on(t1.fdTypeId.eq(t2.fdId))
153
+ .where(t1.fdDate.lt(date_format('2021-11-08', 'Y-%m-%d')))
154
+ .andPartStart(t1.fdName.like( "张%"))
155
+ .and(t1.fdName.like( "李%"))
144
156
  .partEnd()
145
- .orderBy(TDemoTF.fdName.desc());`
157
+ .orderBy(t1.fdName.desc());`
146
158
  return {js1}
147
159
  },
148
160
  methods: {}
@@ -25,74 +25,74 @@ export default {
25
25
  name: 'count',
26
26
  memo: `格式:count(字段) <br>说明:计数`,
27
27
  code: `<span class="api-code">// 例:select count(t1.fd_name) f1
28
- .select(count(TDemoTF.fdName))</span>`
28
+ .select(count(t1.fdName))</span>`
29
29
  }, {
30
30
  name: 'group_concat',
31
31
  memo: `格式:group_concat(字段) <br>说明:聚合`,
32
32
  code: `<span class="api-code">// 例:select group_concat(t1.fd_name) f1
33
- .select(group_concat(TDemoTF.fdName))</span>`
33
+ .select(group_concat(t1.fdName))</span>`
34
34
  }, {
35
35
  name: 'date_format',
36
36
  memo: `格式:date_format(字段, "日期格式") <br>说明:日期格式化
37
37
  <br>常用日期格式:%Y-%m-%d %H:%i:%S<br>例:2021-11-18 11:20:30`,
38
38
  code: `<span class="api-code">// 例:select date_format(t1.fd_date, '%Y-%m-%d %H:%i:%S') f1
39
- .select(date_format(TDemoTF.fdDate, "%Y-%m-%d %H:%i:%S"))</span>`
39
+ .select(date_format(t1.fdDate, "%Y-%m-%d %H:%i:%S"))</span>`
40
40
  }, {
41
41
  name: 'sum',
42
42
  memo: `格式:sum(字段) <br>说明:求和`,
43
43
  code: `<span class="api-code">// 例:select sum(t1.fd_type) f1
44
- .select(sum(TDemoTF.fdType))</span>`
44
+ .select(sum(t1.fdType))</span>`
45
45
  }, {
46
46
  name: 'avg',
47
47
  memo: `格式:avg(字段) <br>说明:平均数`,
48
48
  code: `<span class="api-code">// 例:select avg(t1.fd_type) f1
49
- .select(avg(TDemoTF.fdType))</span>`
49
+ .select(avg(t1.fdType))</span>`
50
50
  }, {
51
51
  name: 'substring',
52
52
  memo: `格式:avg(字段, 开始位置, 截取长度) <br>说明:字符串切割`,
53
53
  code: `<span class="api-code">// 例:select substring(t1.fd_name, 1, 2) f1
54
- .select(substring(TDemoTF.fdName, 1, 2))</span>`
54
+ .select(substring(t1.fdName, 1, 2))</span>`
55
55
  }, {
56
56
  name: 'ifnull',
57
57
  memo: `格式:ifnull(字段, "参数") <br>说明:判断空`,
58
58
  code: `<span class="api-code">// 例:select ifnull(t1.fd_name,t1.fd_comment) f1
59
- .select(ifnull(TTestTF.fdName, TTestTF.fdComment))
59
+ .select(ifnull(t1.fdName, t1.fdComment))
60
60
  // 例:select ifnull(t1.fd_name, '空') f1
61
- .select(ifnull(TTestTF.fdName, "空"))</span>`
61
+ .select(ifnull(t1.fdName, "空"))</span>`
62
62
  }, {
63
63
  name: 'if_',
64
64
  memo: `格式:if(表达式, "参数", "参数") <br>说明:if为java关键字所以末端加了下划线`,
65
65
  code: `<span class="api-code">// 例:select if(t1.fd_name='张三', '是张三', '不是张三') f1
66
- .select(if(TTestTF.fdName.eq("张三"), "是张三", "不是张三"))
66
+ .select(if(t1.fdName.eq("张三"), "是张三", "不是张三"))
67
67
  // 例:select if(t1.fd_name='张三', t1.fd_comment, 'xxx') f1
68
- .select(if(TTestTF.fdName.eq("张三"), TTestTF.fdCommont, "xxx"))</span>`
68
+ .select(if(t1.fdName.eq("张三"), t1.fdCommont, "xxx"))</span>`
69
69
  }, {
70
70
  name: 'round',
71
71
  memo: `格式:ROUND(字段) <br>说明:最近的整数(四舍五入)`,
72
72
  code: `<span class="api-code">// 例:select round(t1.fd_count) f1
73
- .select(round(TTestTF.fdCount))</span>`
73
+ .select(round(t1.fdCount))</span>`
74
74
  }, {
75
75
  name: 'truncate',
76
76
  memo: `格式:truncate(xx, y) <br>说明:数值 xx 保留到小数点后 y 位的值(不会进行四舍五入)`,
77
77
  code: `<span class="api-code">// 例:select truncate(t1.fd_count, 2) f1
78
- .select(truncate(TTestTF.fdCount, 2))</span>`
78
+ .select(truncate(t1.fdCount, 2))</span>`
79
79
  }, {
80
80
  name: 'max',
81
81
  memo: `格式:max(字段) <br>说明:最大值`,
82
82
  code: `<span class="api-code">// 例:select max(t1.fd_count) f1
83
- .select(max(TTestTF.fdCount))</span>`
83
+ .select(max(t1.fdCount))</span>`
84
84
  }, {
85
85
  name: 'min',
86
86
  memo: `格式:min(字段) <br>说明:最小值`,
87
87
  code: `<span class="api-code">// 例:select min(t1.fd_count) f1
88
- .select(min(TTestTF.fdCount))</span>`
88
+ .select(min(t1.fdCount))</span>`
89
89
  }, {
90
90
  name: 'concat',
91
91
  memo: `格式:concat(xx,yy...) <br>说明:拼接`,
92
92
  code: `<span class="api-code">// 例:select concat(t1.fd_name, "名字", "!") f1
93
- .select(concat(TTestTF.fdName , "名字", "!"))
93
+ .select(concat(t1.fdName , "名字", "!"))
94
94
  // 例:select concat(t1.fd_name, t1.fd_type) f1
95
- .select(concat(TTestTF.fdName , TTestTF.fdType))</span>`
95
+ .select(concat(t1.fdName , t1.fdType))</span>`
96
96
  }, {
97
97
  name: 'custom',
98
98
  memo: `格式:custom("参数") <br>说明:自定义任意字符串`,
@@ -27,13 +27,16 @@ export default {
27
27
  2、表别名<br>
28
28
  3、函数<br>`,
29
29
  code: `<span class="api-code">// select示例:
30
- .select(
31
- TDemoTF.fdName, // 默认 => t1.fd_name as fdName
32
- TDemoTF.fdName.as("name"), // 字段别名 => t1.fd_name as name,
33
- TDemoTF.fdName.tableAs("temp"), // 表别名 => temp.fd_name as fdName,
34
- substring(TDemoTF.fdName, 1, 2), // 函数调用 => substring(t1.fd_name, 1, 2) as f1
35
- substring(TDemoTF.fdName, 1, 2).tableAs("temp").as("name")) // 嵌套 => substring(temp.fd_name, 1, 2) as name
36
- .from(TDemoTF.TDemo)</span>`
30
+ TDemoTF t1 = new TDemoTF();
31
+
32
+ ApSql sql = new ApSql();
33
+ sql.select(
34
+ t1.fdName, // 默认 => t1.fd_name as fdName
35
+ t1.fdName.as("name"), // 字段别名 => t1.fd_name as name,
36
+ t1.fdName.tableAs("temp"), // 表别名 => temp.fd_name as fdName,
37
+ substring(t1.fdName, 1, 2), // 函数调用 => substring(t1.fd_name, 1, 2) as f1
38
+ substring(t1.fdName, 1, 2).tableAs("temp").as("name")) // 嵌套 => substring(temp.fd_name, 1, 2) as name
39
+ .from(t1.TDemo)</span>`
37
40
  }, {
38
41
  name: 'select distinct',
39
42
  memo: `同select`,
@@ -43,85 +46,86 @@ export default {
43
46
  name: 'from',
44
47
  memo: `1、表别名`,
45
48
  code: `<span class="api-code">// 1、默认别名:t_demo t1
46
- .from(TDemoTF.TDemo)
49
+ .from(t1.TDemo)
47
50
  // 2、自定义别名转为:t_demo tt
48
- .from(TDemoTF.TDemo).as("tt")</span>`
51
+ TDemoTF t1 = new TDemoTF("tt");
52
+ .from(t1.TDemo)</span>`
49
53
  }, {
50
54
  name: 'inner join ',
51
55
  memo: `同from`,
52
56
  code: `<span class="api-code">// 例:from t_demo1 t1 inner join t_demo2 t2:
53
- .from(TDemo1TF.TDemo).innerJoin(TDemo2TF.TDemo)</span>`
57
+ .from(t1.TDemo).innerJoin(t2.TDemo)</span>`
54
58
  }, {
55
59
  name: 'left join ',
56
60
  memo: `同from`,
57
61
  code: `<span class="api-code">// 例:from t_demo1 t1 left join t_demo2 t2
58
- .from(TDemo1TF.TDemo).leftJoin(TDemo2TF.TDemo)</span>`
62
+ .from(t1.TDemo).leftJoin(t2.TDemo)</span>`
59
63
  }, {
60
64
  name: 'right join ',
61
65
  memo: `同from`,
62
66
  code: `<span class="api-code">// 示例:from t_demo1 t1 right join t_demo2 t2
63
- .from(TDemo1TF.TDemo).rightJoin(TDemo2TF.TDemo)</span>`
67
+ .from(t1.TDemo).rightJoin(t2.TDemo)</span>`
64
68
  }, {
65
69
  name: 'on',
66
70
  memo: `字段连接`,
67
71
  code: `<span class="api-code">// 1、单个条件:....on t1.fd_name= t2.fd_name
68
- .on(TDemo1TF.fdName.eq(TDemo2TF.fdName))
72
+ .on(t1.fdName.eq(t2.fdName))
69
73
  // 2、多条件拼接:....on t1.fd_name= t2.fd_name and t1.fd_type=1
70
- .on(TDemo1TF.fdName.eq(TDemo2TF.fdName)).and(TDemo1TF.fdType.eq(1))</span>`
74
+ .on(t1.fdName.eq(t2.fdName)).and(t1.fdType.eq(1))</span>`
71
75
  }, {
72
76
  name: 'where',
73
77
  memo: `where条件`,
74
78
  code: `<span class="api-code">// 例:where t1.fd_name= '张三'
75
- .where(TDemoTF.fdName.eq("张三"))
79
+ .where(t1.fdName.eq("张三"))
76
80
  // 例:where t1.fd_name= t2.fd_name
77
- .where(TDemo1TF.fdName.eq(TDemo2TF.fdName))</span>`
81
+ .where(t1.fdName.eq(t2.fdName))</span>`
78
82
  }, {
79
83
  name: 'and',
80
84
  memo: `and`,
81
85
  code: `<span class="api-code">// 例:and t1.fd_name= '张三'
82
- .and(TDemoTF.fdName.eq("张三"))
86
+ .and(t1.fdName.eq("张三"))
83
87
  // 例:and t1.fd_name= t2.fd_name
84
- .and(TDemo1TF.fdName.eq(TDemo2TF.fdName))</span>`
88
+ .and(t1.fdName.eq(t2.fdName))</span>`
85
89
  }, {
86
90
  name: 'or',
87
91
  memo: `or`,
88
92
  code: `<span class="api-code">// 例:or t1.fd_name= '张三'
89
- .or(TDemoTF.fdName.eq("张三"))
93
+ .or(t1.fdName.eq("张三"))
90
94
  // 例:or t1.fd_name= t2.fd_name
91
- .or(TDemo1TF.fdName.eq(TDemo2TF.fdName))</span>`
95
+ .or(t1.fdName.eq(t2.fdName))</span>`
92
96
  }, {
93
97
  name: 'andPartStart',
94
98
  memo: `带括号形式:and ()`,
95
99
  code: `<span class="api-code">// 例:and ( t1.fd_name like '%张%' or t1.fd_name like '%李%')
96
- .andPartStart(TDemoTF.fdName.like("%张%")).or(TDemoTF.fdName.like("%李%")).partEnd()</span>`
100
+ .andPartStart(t1.fdName.like("%张%")).or(t1.fdName.like("%李%")).partEnd()</span>`
97
101
  }, {
98
102
  name: 'orPartStart',
99
103
  memo: `带括号形式:or ()`,
100
104
  code: `<span class="api-code">// 例:or ( t1.fd_name like '%张%' or t1.fd_name like '%李%')
101
- .orPartStart(TDemoTF.fdName.like("%张%")).or(TDemoTF.fdName.like("%李%")).partEnd()</span>`
105
+ .orPartStart(t1.fdName.like("%张%")).or(t1.fdName.like("%李%")).partEnd()</span>`
102
106
  }, {
103
107
  name: 'groupBy',
104
108
  memo: `group by`,
105
109
  code: `<span class="api-code">// 例:group by t1.fd_name
106
- .groupBy(TDemoTF.fdName)
110
+ .groupBy(t1.fdName)
107
111
  // 例:group by t1.fd_name, t1.fd_type
108
- .groupBy(TDemoTF.fdName, TDemoTF.fdType)</span>`
112
+ .groupBy(t1.fdName, t1.fdType)</span>`
109
113
  }, {
110
114
  name: 'having',
111
115
  memo: `having`,
112
116
  code: `<span class="api-code">// 例:having t1.fd_name= '张三'
113
- .having(TDemoTF.fdName.eq("张三"))
117
+ .having(t1.fdName.eq("张三"))
114
118
  // 例:having t1.fd_name= '张三' and t1.fd_type = 1
115
- .having(TDemoTF.fdName.eq("张三")).and(TDemoTF.fdType.eq(1))</span>`
119
+ .having(t1.fdName.eq("张三")).and(t1.fdType.eq(1))</span>`
116
120
  }, {
117
121
  name: 'orderBy',
118
122
  memo: `order by<br> 默认升序:asc`,
119
123
  code: `<span class="api-code">// 例:order by t1.fd_name
120
- .orderBy(TDemoTF.fdName)
124
+ .orderBy(t1.fdName)
121
125
  // 例:order by t1.fd_name, t1.fd_type
122
- .orderBy(TDemoTF.fdName, TDemoTF.fdType)
126
+ .orderBy(t1.fdName, t1.fdType)
123
127
  // 例:order by t1.fd_name asc, t1.fd_type desc
124
- .orderBy(TDemoTF.fdName.asc(), TDemoTF.fdType.desc())</span>`
128
+ .orderBy(t1.fdName.asc(), t1.fdType.desc())</span>`
125
129
  }, {
126
130
  name: 'limit',
127
131
  memo: `limit`,
@@ -25,67 +25,67 @@ export default {
25
25
  name: '=',
26
26
  memo: `格式:字段.eq("参数") <br>说明:等于。参数可以是字段`,
27
27
  code: `<span class="api-code">// 例:t1.fd_name = "张三"
28
- TDemoTF.fdName.eq("张三")
28
+ t1.fdName.eq("张三")
29
29
  // 例:t1.fd_name = t2.fd_name
30
- TDemo1TF.fdName.eq(TDemo2TF.fdName)</span>`
30
+ t1.fdName.eq(t2.fdName)</span>`
31
31
  }, {
32
32
  name: '!=',
33
33
  memo: `格式:字段.notEq("参数") <br>说明:不等于。参数可以是字段`,
34
34
  code: `<span class="api-code">// 例:t1.fd_name != "张三"
35
- TDemoTF.fdName.notEq("张三")
35
+ t1.fdName.notEq("张三")
36
36
  // 例:t1.fd_name != t2.fd_name
37
- TDemo1TF.fdName.notEq(TDemo2TF.fdName)</span>`
37
+ t1.fdName.notEq(t2.fdName)</span>`
38
38
  }, {
39
39
  name: '<',
40
40
  memo: `格式:字段.lt("参数") <br>说明:小于。参数可以是字段`,
41
41
  code: `<span class="api-code">// 例:t1.fd_count < 1
42
- TDemoTF.fdCount.lt(1)</span>`
42
+ t1.fdCount.lt(1)</span>`
43
43
  }, {
44
44
  name: '<=',
45
45
  memo: `格式:字段.ltEq("参数") <br>说明:小于等于。参数可以是字段`,
46
46
  code: `<span class="api-code">// 例:t1.fd_count <= 1
47
- TDemoTF.fdCount.ltEq(1)</span>`
47
+ t1.fdCount.ltEq(1)</span>`
48
48
  }, {
49
49
  name: '>',
50
50
  memo: `格式:字段.gt("参数") <br>说明:大于。参数可以是字段`,
51
51
  code: `<span class="api-code">// 例:t1.fd_count > 1
52
- TDemoTF.fdCount.gt(1)</span>`
52
+ t1.fdCount.gt(1)</span>`
53
53
  }, {
54
54
  name: '>=',
55
55
  memo: `格式:字段.gtEq("参数") <br>说明:大于等于。参数可以是字段`,
56
56
  code: `<span class="api-code">// 例:t1.fd_count >= 1
57
- TDemoTF.fdCount.gtEq(1)</span>`
57
+ t1.fdCount.gtEq(1)</span>`
58
58
  }, {
59
59
  name: 'like',
60
60
  memo: `格式:字段.like("参数") <br>说明:like`,
61
61
  code: `<span class="api-code">// 例:t1.fd_name like "张%"
62
- TDemoTF.fdCount.like("张%")</span>`
62
+ t1.fdCount.like("张%")</span>`
63
63
  }, {
64
64
  name: 'is null',
65
65
  memo: `格式:字段.isNull() <br>说明:为空`,
66
66
  code: `<span class="api-code">// 例:t1.fd_name is null
67
- TDemoTF.fdCount.isNull()</span>`
67
+ t1.fdCount.isNull()</span>`
68
68
  }, {
69
69
  name: 'is not null',
70
70
  memo: `格式:字段.isNotNull() <br>说明:不为空`,
71
71
  code: `<span class="api-code">// 例:t1.fd_name is not null
72
- TDemoTF.fdCount.isNotNull()</span>`
72
+ t1.fdCount.isNotNull()</span>`
73
73
  }, {
74
74
  name: 'in',
75
75
  memo: `格式:字段.in("参数","参数"...) <br>说明:包含。<br>参数可以是多个。<br>参数可以是list`,
76
76
  code: `<span class="api-code">// 例:t1.fd_type in (1, 2, 3)
77
- TDemoTF.fdType.in(1, 2, 2)
77
+ t1.fdType.in(1, 2, 2)
78
78
  // 例:t1.fd_type in (1, 2, 3)
79
79
  List list = new ArrayList<Integer>();
80
80
  list.add(1);
81
81
  list.add(2);
82
82
  list.add(3);
83
- TDemoTF.fdType.in(list)</span>`
83
+ t1.fdType.in(list)</span>`
84
84
  }, {
85
85
  name: 'between and',
86
86
  memo: `格式:字段.between() <br>说明:不为空`,
87
87
  code: `<span class="api-code">// 例:t1.fd_type between 1 and 3
88
- TDemoTF.fdType.between(1, 3)</span>`
88
+ t1.fdType.between(1, 3)</span>`
89
89
  }
90
90
  ]
91
91
 
@@ -0,0 +1,44 @@
1
+ <template>
2
+ <div style="height: 100%">
3
+ <h3>日期工具类 - DateUtil</h3>
4
+ <api-table :data="methodData" :columns="methodCols"/>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ import {ApiCode, ApiContent, ApiTable, ApiTittle1, ApiTittle2} from './../components'
10
+
11
+ export default {
12
+ name: 'ApiStringUtil',
13
+ components: {
14
+ ApiTable, ApiCode, ApiTittle1, ApiContent, ApiTittle2
15
+ },
16
+ data() {
17
+ const methodCols = [
18
+ {label: '方法名', prop: 'name', width: '220px'},
19
+ {label: '说明', prop: 'memo', width: '300px'},
20
+ {label: '示例代码', prop: 'code', minWidth: '100px'}]
21
+ const methodData = [
22
+ {
23
+ name: 'formatDate',
24
+ memo: `格式化日期<br><span class="api-memo">格式:yyyy-MM-dd hh:mm:ss。</span>`,
25
+ code: `<span class="api-code">// 1、导入方法
26
+ import {formatDate} from 'ap-util/util/DateUtil';
27
+
28
+ // 2、调用
29
+ let str = formatDate(new Date(), 'yyyy-MM-dd hh:mm:ss');
30
+ </span>`
31
+ }
32
+ ]
33
+
34
+ return {
35
+ methodData,
36
+ methodCols
37
+ }
38
+ },
39
+ methods: {}
40
+ }
41
+ </script>
42
+
43
+ <style scoped>
44
+ </style>
@@ -0,0 +1,128 @@
1
+ <template>
2
+ <div style="height: 100%">
3
+ <h3>WebSocket工具类 - WebSocketUtil</h3>
4
+ <api-tittle-2>1、导入方法:</api-tittle-2>
5
+ <api-content>
6
+ <api-code>import {initWebSocket, sendMessage, sendMessageByPrefix,closeWebSocket} from "ap-util/util/WebSocketUtil";</api-code>
7
+ </api-content>
8
+
9
+ <api-tittle-2>2、初始化WebSocket:</api-tittle-2>
10
+ <api-content>
11
+ <b>初始化:</b><span class="api-code">initWebSocket(options)</span><br>
12
+ 【参数】id - [必填][唯一] 连接id<br>
13
+ 【参数】onmessage - 接收后端消息回调函数<br>
14
+ 【参数】onopen - 连接成功回调函数<br>
15
+ 【参数】onclose - 连接关闭回调函数<br>
16
+ 【参数】onerror - 连接错误回调函数<br>
17
+ 【参数】reconnect - 断开自动重连,默认true<br>
18
+
19
+ <api-code>{{js1}}</api-code>
20
+ </api-content>
21
+
22
+ <api-tittle-2>3、发送消息:两种方式,根据具体需求选择</api-tittle-2>
23
+ <api-tittle-2>3.1 前端方式发送消息:</api-tittle-2>
24
+ <api-content>
25
+ <b>单消息发送:</b><span class="api-code">sendMessage(id, message)</span><br>
26
+ 【参数】id - 连接id,同初始化时的id<br>
27
+ 【参数】message - 消息内容<br>
28
+ <api-code>// 例:给id为"demo123"的连接发消息<br>
29
+ sendMessage("demo123", "这是推给你的消息");</api-code><br>
30
+
31
+ <b>群发消息:</b><span class="api-code">sendMessageByPrefix(prefix, message)</span><br>
32
+ 【参数】prefix - 连接id的前缀<br>
33
+ 【参数】message - 消息内容<br>
34
+ <api-code>// 例:给以"demo"为开头的连接,群发消息<br>
35
+ sendMessageByPrefix("demo", "这是群发的消息");</api-code>
36
+ </api-content>
37
+ <api-tittle-2>3.2 后端方式发送消息:</api-tittle-2>
38
+ <api-content>
39
+ 参考后端工具类【WebSocketUtil】
40
+ </api-content>
41
+
42
+ <api-tittle-2>4、关闭WebSocket:</api-tittle-2>
43
+ <api-content>
44
+ 在页面Destroy前关闭连接,如下
45
+ <api-code>{{js2}}</api-code>
46
+ </api-content>
47
+
48
+ <api-tittle-2>5、完整示例:</api-tittle-2>
49
+ <api-content>
50
+ <api-code>{{js3}}</api-code>
51
+ </api-content>
52
+
53
+ </div>
54
+ </template>
55
+
56
+ <script>
57
+ import {ApiCode, ApiContent, ApiTable, ApiTittle1, ApiTittle2} from './../components'
58
+
59
+ export default {
60
+ name: 'ApiVueWebSocketUtil',
61
+ components: {
62
+ ApiTable, ApiCode, ApiTittle1, ApiContent, ApiTittle2
63
+ },
64
+ data() {
65
+ const js1 = `// 初始化:通常只需要配置id和onmessage即可
66
+ initWebSocket({
67
+ id: this.id,
68
+ onmessage: (event) => {
69
+ console.log("前端接收到消息啦!" + event.data);
70
+ }
71
+ })`
72
+ const js2 = `beforeDestroy() {
73
+ closeWebSocket(this.id);
74
+ },`
75
+ const js3 = `<template>
76
+ <ap-container>
77
+ <ap-main margin="1111">
78
+ <div>
79
+ <el-button type="primary" @click="sendMsg">单个发消息</el-button>
80
+ <el-button type="primary" @click="sendMessageByPrefix">群发消息</el-button>
81
+ </div>
82
+ </ap-main>
83
+ </ap-container>
84
+ </template>
85
+
86
+ <script>
87
+
88
+ import {closeWebSocket, initWebSocket, sendMessage, sendMessageByPrefix} from "ap-util/util/WebSocketUtil";
89
+
90
+ export default {
91
+ name: "DemoSocket",
92
+ mounted() {
93
+ initWebSocket({
94
+ id: this.id,
95
+ onmessage: (event) => {
96
+ console.log("前端接收到消息:" + event.data);
97
+ },
98
+ })
99
+ },
100
+ beforeDestroy() {
101
+ closeWebSocket(this.id);
102
+ },
103
+ data() {
104
+ return {
105
+ id: "demo" + new Date().getTime()
106
+ }
107
+ },
108
+ methods: {
109
+ sendMsg() {
110
+ sendMessage(this.id, "这是单一消息");
111
+ },
112
+ sendMessageByPrefix() {
113
+ sendMessageByPrefix("demo", "这是群发消息");
114
+ }
115
+ }
116
+ }
117
+ < /script>`
118
+
119
+ return {
120
+ js1,js2,js3
121
+ }
122
+ },
123
+ methods: {}
124
+ }
125
+ </script>
126
+
127
+ <style scoped>
128
+ </style>
@@ -0,0 +1,47 @@
1
+ <template>
2
+ <div style="height: 100%">
3
+ <h3>WebSocket工具类 - WebSocketUtil</h3>
4
+ <api-table :data="methodData" :columns="methodCols"/>
5
+ </div>
6
+ </template>
7
+
8
+ <script>
9
+ import {ApiCode, ApiContent, ApiTable, ApiTittle1, ApiTittle2} from './../components'
10
+
11
+ export default {
12
+ name: 'ApiWebSocketUtil',
13
+ components: {
14
+ ApiTable, ApiCode, ApiTittle1, ApiContent, ApiTittle2
15
+ },
16
+ data() {
17
+ const methodCols = [
18
+ {label: '方法名', prop: 'name', width: '220px'},
19
+ {label: '说明', prop: 'memo', width: '300px'},
20
+ {label: '示例代码', prop: 'code', minWidth: '100px'}]
21
+ const methodData = [
22
+ {
23
+ name: 'sendMessage',
24
+ memo: `单点消息:推送给指定的连接<br>`,
25
+ code: `<span class="api-code">// 给id为"demo123"的连接发消息
26
+ WebSocketUtil.sendMessage("demo123", "消息内容");
27
+ </span>`
28
+ },{
29
+ name: 'sendMessageByPrefix',
30
+ memo: `广播消息:推送给指定前缀的连接<br>`,
31
+ code: `<span class="api-code">// 给以"demo"为开头的连接,群发消息
32
+ WebSocketUtil.sendMessageByPrefix("demo", "消息内容");
33
+ </span>`
34
+ }
35
+ ]
36
+
37
+ return {
38
+ methodData,
39
+ methodCols
40
+ }
41
+ },
42
+ methods: {}
43
+ }
44
+ </script>
45
+
46
+ <style scoped>
47
+ </style>
@@ -0,0 +1,108 @@
1
+ <template>
2
+ <ap-container>
3
+ <ap-main margin="1111">
4
+ <div v-if="!showPage">
5
+ <el-input v-model="secretKey" placeholder="请输入授权秘钥!" show-password style="width: 200px"></el-input>
6
+ <el-button type="primary" @click="checkPageAuth">确定</el-button>
7
+ </div>
8
+ <ap-table v-if="showPage" ref="tDevDbSourceRef" :options.sync="tDevDbSourceOpt"></ap-table>
9
+ </ap-main>
10
+ </ap-container>
11
+ </template>
12
+
13
+ <script>
14
+ export default {
15
+ name: 'DevDbSource',
16
+ data() {
17
+ let columns = [
18
+ {
19
+ prop: 'fdName',
20
+ label: '连接名',
21
+ type: 'input',
22
+ width: 150,
23
+ }, {
24
+ prop: 'fdDbName',
25
+ label: '数据库名称',
26
+ type: 'input',
27
+ width: 100,
28
+ }, {
29
+ prop: 'fdUrl',
30
+ label: '数据库地址',
31
+ type: 'input',
32
+ minWidth: 200,
33
+ showOverflowTooltip: true
34
+ }, {
35
+ prop: 'fdUserName',
36
+ label: '数据库用户名',
37
+ type: 'input',
38
+ width: 100,
39
+ }, {
40
+ prop: 'fdPassword',
41
+ label: '数据库密码',
42
+ type: 'input',
43
+ width: 100,
44
+ html: function (value, row) {
45
+ return "******";
46
+ }
47
+ }, {
48
+ prop: 'fdComment',
49
+ label: '备注',
50
+ type: 'input',
51
+ minWidth: 150,
52
+ }, {
53
+ prop: "fdDisabled",
54
+ label: "是否有效",
55
+ type: "select",
56
+ width: 100,
57
+ selectOptions: [{label: "失效", value: 1}, {label: "有效", value: 0}],
58
+ addDefaultValue: 0,
59
+ align: "center",
60
+ html: function (value, row) {
61
+ if (value == 1) {
62
+ return '<div class="ap-tag-danger">失效</div>'
63
+ } else if (value == 0) {
64
+ return '<div class="ap-tag-success">有效</el-tag>';
65
+ }
66
+ }
67
+ },
68
+ ];
69
+ let tableOpt = {
70
+ title: "数据源管理",
71
+ columns: columns,
72
+ editPk: "fdId", //默认fdId
73
+ deletePk: "fdId", // 默认fdId
74
+ dataUrl: "/apd/db/TDevDbSource/getTDevDbSourceGridList",
75
+ saveUrl: "/apd/db/TDevDbSource/saveTDevDbSourceGridData",
76
+ deleteUrl: "/apd/db/TDevDbSource/deleteTDevDbSourceGridData",
77
+ toolbarBtn: ["add", "edit", "del", "cancel", "refresh", "save"],
78
+ initData: true, // 默认false
79
+ params: {}
80
+ };
81
+ return {
82
+ tDevDbSourceOpt: tableOpt,
83
+ secretKey: '',
84
+ showPage: false
85
+ }
86
+ },
87
+ methods: {
88
+ checkPageAuth() {
89
+ this.$request({
90
+ url: '/apd/db/TDevDbAuth/checkPageAuth',
91
+ method: 'post',
92
+ data: {
93
+ secretKey: this.secretKey
94
+ }
95
+ }).then(response => {
96
+ if (response.data) {
97
+ this.showPage = true;
98
+ } else {
99
+ this.$message.error("授权秘钥错误!")
100
+ }
101
+ })
102
+ }
103
+ }
104
+ }
105
+ </script>
106
+
107
+ <style scoped>
108
+ </style>
@@ -0,0 +1,117 @@
1
+ <template>
2
+ <ap-container>
3
+ <ap-container>
4
+ <template v-if="!showPage">
5
+ <ap-main margin="1111">
6
+ <div>
7
+ <el-input v-model="secretKey" placeholder="请输入授权秘钥!" show-password style="width: 200px"></el-input>
8
+ <el-button type="primary" @click="checkPageAuth">确定</el-button>
9
+ </div>
10
+ </ap-main>
11
+ </template>
12
+ <template v-if="showPage">
13
+ <ap-aside width="50%" margin="1111">
14
+ <ap-table ref="tDevDbUserRef" :options.sync="tDevDbUserOpt"></ap-table>
15
+ </ap-aside>
16
+ <ap-split-panel></ap-split-panel>
17
+ <ap-main width="50%" margin="1110">
18
+ <ap-table ref="tDevDbUserSourceRef" :options.sync="tDevDbUserSourceOpt"></ap-table>
19
+ </ap-main>
20
+ </template>
21
+ </ap-container>
22
+ </ap-container>
23
+ </template>
24
+
25
+ <script>
26
+ export default {
27
+ name: 'TDevDbUser',
28
+ data() {
29
+ let tDevDbUserCols = [
30
+ {
31
+ prop: 'fdUserName',
32
+ label: '用户名',
33
+ type: 'input',
34
+ width: '200px'
35
+ },
36
+ ];
37
+ let tDevDbUserOpt = {
38
+ title: "数据源用户",
39
+ columns: tDevDbUserCols,
40
+ editPk: "fdId", //默认fdId
41
+ deletePk: "fdId", // 默认fdId
42
+ dataUrl: "/apd/db/TDevDbUser/getTDevDbUserGridList",
43
+ saveUrl: "/apd/db/TDevDbUser/saveTDevDbUserGridData",
44
+ deleteUrl: "/apd/db/TDevDbUser/deleteTDevDbUserGridData",
45
+ toolbarBtn: ["add", "edit", "del", "refresh", "save"],
46
+ initData: true, // 默认false
47
+ rowClickEvent: (row, column, event) => {
48
+ this.selectRowId = row.fdId;
49
+ this.selectUserName = row.fdUserName;
50
+ this.tDevDbUserSourceOpt.title = `【${row.fdUserName}】数据源列表`;
51
+ // 点击行刷新右侧表
52
+ this.$refs.tDevDbUserSourceRef.refresh();
53
+ },
54
+ params: {}
55
+ };
56
+ let tDevDbUserSourceCols = [
57
+ {
58
+ prop: 'fdSourceId',
59
+ label: '数据源',
60
+ type: 'select',
61
+ selectOptionsKey: {label: "fdName", value: "fdId"},
62
+ selectOptionsRemote: "sourceList",
63
+ width: '250px'
64
+ },
65
+ ];
66
+ let tDevDbUserSourceOpt = {
67
+ title: "数据源列表",
68
+ columns: tDevDbUserSourceCols,
69
+ editPk: "fdId", //默认fdId
70
+ deletePk: "fdId", // 默认fdId
71
+ dataUrl: "/apd/db/TDevDbUserSource/getTDevDbUserSourceGridList",
72
+ saveUrl: "/apd/db/TDevDbUserSource/saveTDevDbUserSourceGridData",
73
+ deleteUrl: "/apd/db/TDevDbUserSource/deleteTDevDbUserSourceGridData",
74
+ toolbarBtn: ["add", "edit", "del", "refresh", "save"],
75
+ initData: false, // 默认false
76
+ addDefaultObj: () => {
77
+ return {
78
+ fdDbUserId: this.selectRowId
79
+ }
80
+ },
81
+ params: () => {
82
+ return {
83
+ dbUserId: this.selectRowId
84
+ }
85
+ }
86
+ };
87
+ return {
88
+ secretKey: '',
89
+ showPage: false,
90
+ selectRowId: '', // 左侧表点击行
91
+ selectUserName: '',
92
+ tDevDbUserOpt: tDevDbUserOpt,
93
+ tDevDbUserSourceOpt: tDevDbUserSourceOpt,
94
+ }
95
+ },
96
+ methods: {
97
+ checkPageAuth() {
98
+ this.$request({
99
+ url: '/apd/db/TDevDbAuth/checkPageAuth',
100
+ method: 'post',
101
+ data: {
102
+ secretKey: this.secretKey
103
+ }
104
+ }).then(response => {
105
+ if (response.data) {
106
+ this.showPage = true;
107
+ } else {
108
+ this.$message.error("授权秘钥错误!")
109
+ }
110
+ })
111
+ }
112
+ }
113
+ }
114
+ </script>
115
+
116
+ <style scoped>
117
+ </style>
@@ -10,9 +10,9 @@
10
10
  <el-form-item label="数据库" prop="fdSourceId">
11
11
  <el-select v-model="configForm.fdSourceId" placeholder="请选择数据库" filterable>
12
12
  <el-option v-for="item in dbSourceList"
13
- :key="item.fdSourceId"
13
+ :key="item.fdId"
14
14
  :label="item.fdName"
15
- :value="item.fdSourceId"/>
15
+ :value="item.fdId"/>
16
16
  </el-select>
17
17
  </el-form-item>
18
18
 
@@ -3,21 +3,26 @@
3
3
  <el-tab-pane label="我的配置" style="height: 100%;">
4
4
  <dev-my-config/>
5
5
  </el-tab-pane>
6
+ <el-tab-pane label="数据源管理" style="height: 100%;">
7
+ <dev-db-source/>
8
+ </el-tab-pane>
6
9
  <el-tab-pane label="数据源授权" style="height: 100%;">
7
- <dev-db-auth/>
10
+ <dev-db-user-source/>
8
11
  </el-tab-pane>
9
12
  </el-tabs>
10
13
  </template>
11
14
 
12
15
  <script>
13
- import DevDbAuth from './DevDbAuth'
14
16
  import DevMyConfig from './DevMyConfig'
17
+ import DevDbSource from './DevDbSource'
18
+ import DevDbUserSource from './DevDbUserSource'
15
19
 
16
20
  export default {
17
21
  name: 'ConfigPanel',
18
22
  components: {
19
- DevDbAuth,
20
- DevMyConfig
23
+ DevMyConfig,
24
+ DevDbSource,
25
+ DevDbUserSource
21
26
  }
22
27
  }
23
28
  </script>
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ap-dev",
3
- "version": "1.1.12",
3
+ "version": "1.1.16",
4
4
  "description": "===== ap-dev =====",
5
5
  "author": "xiexinbin",
6
6
  "email": "876818817@qq.com",
@@ -1,71 +0,0 @@
1
- <template>
2
- <ap-container>
3
- <ap-main margin="1111">
4
- <div v-if="!showPage">
5
- <el-input v-model="secretKey" placeholder="请输入授权秘钥!" show-password style="width: 200px"></el-input>
6
- <el-button type="primary" @click="checkPageAuth">确定</el-button>
7
- </div>
8
- <ap-table v-if="showPage" ref="tDevDbAuthRef" :options.sync="tDevDbAuthOpt"></ap-table>
9
- </ap-main>
10
- </ap-container>
11
- </template>
12
-
13
- <script>
14
- export default {
15
- name: 'DevDbAuth',
16
- data() {
17
- let columns = [
18
- {
19
- prop: 'fdUserName',
20
- label: '用户登录名',
21
- type: 'input'
22
- }, {
23
- prop: 'fdSourceId',
24
- label: '数据源',
25
- type: 'select',
26
- selectOptionsKey: {label: "fdName", value: "fdSourceId"},
27
- selectOptionsRemote: 'dbList'
28
- }
29
- ];
30
- let tableOpt = {
31
- title: "数据源授权",
32
- columns: columns,
33
- editPk: "fdId", //默认fdId
34
- deletePk: "fdId", // 默认fdId
35
- dataUrl: "/apd/db/TDevDbAuth/getTDevDbAuthGridList",
36
- saveUrl: "/apd/db/TDevDbAuth/saveTDevDbAuthGridData",
37
- deleteUrl: "/apd/db/TDevDbAuth/deleteTDevDbAuthGridData",
38
- toolbarBtn: ["add", "edit", "del", "cancel", "refresh", "save"],
39
- initData: true, // 默认false
40
- params: () => {
41
- return {secretKey: this.secretKey}
42
- }
43
- };
44
- return {
45
- tDevDbAuthOpt: tableOpt,
46
- secretKey: '',
47
- showPage: false
48
- }
49
- },
50
- methods: {
51
- checkPageAuth() {
52
- this.$request({
53
- url: '/apd/db/TDevDbAuth/checkPageAuth',
54
- method: 'post',
55
- data: {
56
- secretKey: this.secretKey
57
- }
58
- }).then(response => {
59
- if (response.data) {
60
- this.showPage = true;
61
- } else {
62
- this.$message.error("授权秘钥错误!")
63
- }
64
- })
65
- }
66
- }
67
- }
68
- </script>
69
-
70
- <style scoped>
71
- </style>