tianheng-ui 0.1.68 → 0.1.69
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/theme-chalk/js/axios.js +1 -1
- package/lib/theme-chalk/styles/icon.css +8 -2
- package/lib/tianheng-ui.js +12 -12
- package/package.json +1 -1
- package/packages/FormMaking/GenerateForm.vue +13 -7
- package/packages/FormMaking/WidgetTools.vue +0 -1
- package/packages/FormMaking/config/index.js +2 -0
- package/packages/FormMaking/custom/config.js +6 -6
- package/packages/FormMaking/custom/configs/grid.vue +17 -9
- package/packages/FormMaking/custom/configs/list.vue +89 -7
- package/packages/FormMaking/custom/items/list_pro.vue +107 -6
- package/packages/FormMaking/custom/items/upload.vue +3 -1
- package/packages/FormMaking/index.vue +10 -2
- package/packages/FormMaking/lang/zh-CN.js +2 -2
- package/packages/FormMaking/network/axios.js +88 -0
- package/packages/FormMaking/styles/index.scss +2 -2
- package/packages/FormMaking/util/Log.js +99 -0
- package/packages/FormMaking/util/generateCode.js +2 -2
- package/packages/TableMaking/config/index.js +8 -0
- package/packages/TableMaking/generateTable.vue +10 -3
- package/packages/TableMaking/network/axios.js +88 -0
- package/packages/TableMaking/util/Log.js +99 -0
- package/packages/FormMaking/util/request.js +0 -25
package/package.json
CHANGED
@@ -36,9 +36,10 @@
|
|
36
36
|
</template>
|
37
37
|
|
38
38
|
<script>
|
39
|
-
import * as Axios from "lib/theme-chalk/js/axios";
|
40
|
-
import { deepClone, getProperty, setProperty } from "./util/index";
|
41
39
|
import GenetateFormItem from "./GenerateFormItem";
|
40
|
+
import * as Axios from "./network/axios";
|
41
|
+
import appConfig from "./config/index";
|
42
|
+
import { deepClone, getProperty, setProperty } from "./util/index";
|
42
43
|
|
43
44
|
export default {
|
44
45
|
name: "thFormGenerate",
|
@@ -95,11 +96,14 @@ export default {
|
|
95
96
|
console.log("watch models =>", this.models);
|
96
97
|
}
|
97
98
|
},
|
98
|
-
created() {
|
99
|
-
localStorage.setItem("_TH_OauthConfig", JSON.stringify(this.oauthConfig));
|
100
|
-
this.axios = Axios.init(this.oauthConfig);
|
101
|
-
},
|
99
|
+
created() {},
|
102
100
|
mounted() {
|
101
|
+
sessionStorage.setItem(
|
102
|
+
appConfig.storageKeys.oauthConfig,
|
103
|
+
JSON.stringify(this.oauthConfig)
|
104
|
+
);
|
105
|
+
this.axios = Axios.init(this.oauthConfig);
|
106
|
+
|
103
107
|
this.generateModle(this.formConfig.list, this.models);
|
104
108
|
console.log("mounted models =>", this.models);
|
105
109
|
this.handleMountedRemotData();
|
@@ -298,7 +302,9 @@ export default {
|
|
298
302
|
initParams(item.children);
|
299
303
|
} else {
|
300
304
|
const value =
|
301
|
-
|
305
|
+
item.defaultValue ||
|
306
|
+
getProperty(this.models, item.pAlias) ||
|
307
|
+
null;
|
302
308
|
setProperty(params, item.pAlias, value);
|
303
309
|
}
|
304
310
|
});
|
@@ -224,7 +224,6 @@
|
|
224
224
|
<script>
|
225
225
|
import { deepClone } from "./util/index";
|
226
226
|
import * as XLSX from "xlsx/xlsx.mjs";
|
227
|
-
import request from "./util/request";
|
228
227
|
import generateCode from "./util/generateCode.js";
|
229
228
|
import GenerateForm from "./GenerateForm";
|
230
229
|
export default {
|
@@ -254,7 +254,7 @@ export const basicComponents = [
|
|
254
254
|
rules: []
|
255
255
|
},
|
256
256
|
{
|
257
|
-
name: "
|
257
|
+
name: "下拉选择器",
|
258
258
|
type: "select",
|
259
259
|
icon: "icon-select",
|
260
260
|
options: {
|
@@ -597,7 +597,7 @@ export const basicComponents = [
|
|
597
597
|
|
598
598
|
export const advanceComponents = [
|
599
599
|
{
|
600
|
-
name: "
|
600
|
+
name: "子表格",
|
601
601
|
type: "table",
|
602
602
|
icon: "th-icon-insertrowabove",
|
603
603
|
options: {
|
@@ -629,7 +629,7 @@ export const advanceComponents = [
|
|
629
629
|
rules: []
|
630
630
|
},
|
631
631
|
{
|
632
|
-
name: "
|
632
|
+
name: "子表格H5",
|
633
633
|
type: "tableH5",
|
634
634
|
icon: "th-icon-insertrowleft",
|
635
635
|
options: {
|
@@ -662,7 +662,7 @@ export const advanceComponents = [
|
|
662
662
|
type: "list",
|
663
663
|
icon: "th-icon-orderedlist",
|
664
664
|
options: {
|
665
|
-
defaultValue:
|
665
|
+
defaultValue: [],
|
666
666
|
columns: [],
|
667
667
|
customClass: "",
|
668
668
|
labelWidth: 100,
|
@@ -825,7 +825,7 @@ export const businessComponents = [
|
|
825
825
|
{
|
826
826
|
name: "描述列表",
|
827
827
|
type: "descriptions",
|
828
|
-
icon: "th-icon-
|
828
|
+
icon: "th-icon-detail",
|
829
829
|
options: {
|
830
830
|
border: false,
|
831
831
|
column: 1,
|
@@ -925,7 +925,7 @@ export const businessComponents = [
|
|
925
925
|
{
|
926
926
|
name: "流程节点",
|
927
927
|
type: "workflow",
|
928
|
-
icon: "th-icon-
|
928
|
+
icon: "th-icon-apartment",
|
929
929
|
options: {
|
930
930
|
reverse: false,
|
931
931
|
placement: "right",
|
@@ -6,10 +6,12 @@
|
|
6
6
|
</el-form-item>
|
7
7
|
|
8
8
|
<el-form-item label="栅格间隔">
|
9
|
-
<el-input
|
10
|
-
|
11
|
-
v-model
|
12
|
-
|
9
|
+
<el-input-number
|
10
|
+
style="width:100%"
|
11
|
+
v-model="widget.options.gutter"
|
12
|
+
controls-position="right"
|
13
|
+
:min="0"
|
14
|
+
></el-input-number>
|
13
15
|
</el-form-item>
|
14
16
|
|
15
17
|
<el-form-item label="列配置项">
|
@@ -28,7 +30,13 @@
|
|
28
30
|
:key="index"
|
29
31
|
>
|
30
32
|
<i class="drag"><i class="iconfont icon-icon_bars"></i></i>
|
31
|
-
<el-input
|
33
|
+
<el-input-number
|
34
|
+
style="width:100%"
|
35
|
+
v-model="item.span"
|
36
|
+
controls-position="right"
|
37
|
+
:min="0"
|
38
|
+
:max="24"
|
39
|
+
></el-input-number>
|
32
40
|
<el-button
|
33
41
|
class="delete"
|
34
42
|
circle
|
@@ -39,12 +47,12 @@
|
|
39
47
|
></el-button>
|
40
48
|
</div>
|
41
49
|
</draggable>
|
42
|
-
<div style="margin-left: 22px;
|
50
|
+
<div style="margin-left: 22px;">
|
43
51
|
<el-button type="text" @click="handleAddOption">添加列</el-button>
|
44
52
|
</div>
|
45
53
|
</el-form-item>
|
46
54
|
|
47
|
-
<el-form-item label="
|
55
|
+
<el-form-item label="水平排列">
|
48
56
|
<el-select v-model="widget.options.justify">
|
49
57
|
<el-option value="start" label="左对齐"></el-option>
|
50
58
|
<el-option value="end" label="右对齐"></el-option>
|
@@ -54,7 +62,7 @@
|
|
54
62
|
</el-select>
|
55
63
|
</el-form-item>
|
56
64
|
|
57
|
-
<el-form-item label="
|
65
|
+
<el-form-item label="垂直排列">
|
58
66
|
<el-select v-model="widget.options.align">
|
59
67
|
<el-option value="top" label="顶部对齐"></el-option>
|
60
68
|
<el-option value="middle" label="居中"></el-option>
|
@@ -107,7 +115,7 @@ export default {
|
|
107
115
|
display: flex;
|
108
116
|
align-items: center;
|
109
117
|
|
110
|
-
.el-input {
|
118
|
+
.el-input-number {
|
111
119
|
margin: 0 5px;
|
112
120
|
}
|
113
121
|
|
@@ -1,18 +1,100 @@
|
|
1
1
|
<template>
|
2
|
-
<div>
|
3
|
-
|
2
|
+
<div class="component-config">
|
3
|
+
<el-collapse-item title="组件配置" name="group-element">
|
4
|
+
<el-form-item label="标题">
|
5
|
+
<el-input v-model="widget.name" clearable></el-input>
|
6
|
+
</el-form-item>
|
7
|
+
|
8
|
+
<el-form-item label="标签宽度">
|
9
|
+
<div style="display: flex;">
|
10
|
+
<el-checkbox v-model="widget.options.isLabelWidth"
|
11
|
+
>自定义</el-checkbox
|
12
|
+
>
|
13
|
+
<el-input-number
|
14
|
+
style="margin-left:5px;"
|
15
|
+
v-model="widget.options.labelWidth"
|
16
|
+
controls-position="right"
|
17
|
+
:min="0"
|
18
|
+
:max="200"
|
19
|
+
:disabled="!widget.options.isLabelWidth"
|
20
|
+
>
|
21
|
+
</el-input-number>
|
22
|
+
</div>
|
23
|
+
</el-form-item>
|
24
|
+
|
25
|
+
<el-form-item label-width="0">
|
26
|
+
<div class="config-header">
|
27
|
+
<span class="title">默认值</span>
|
28
|
+
<span class="value" @click="handleAddData">添加数据</span>
|
29
|
+
</div>
|
30
|
+
<code-editor
|
31
|
+
v-model="widget.options.defaultValue"
|
32
|
+
language="json"
|
33
|
+
></code-editor>
|
34
|
+
</el-form-item>
|
35
|
+
|
36
|
+
<el-form-item label="新增按钮">
|
37
|
+
<el-input v-model.number="widget.options.addButtonText"></el-input>
|
38
|
+
</el-form-item>
|
39
|
+
|
40
|
+
<el-form-item label="删除按钮">
|
41
|
+
<el-input v-model.number="widget.options.deleteButtonText"></el-input>
|
42
|
+
</el-form-item>
|
43
|
+
|
44
|
+
<el-form-item label="可删除的最小索引">
|
45
|
+
<el-input-number v-model="widget.options.deleteIndex" :min="0">
|
46
|
+
</el-input-number>
|
47
|
+
</el-form-item>
|
48
|
+
|
49
|
+
<el-form-item label="操作属性">
|
50
|
+
<el-checkbox v-model="widget.options.disabled">禁用 </el-checkbox>
|
51
|
+
<el-checkbox v-model="widget.options.hidden">隐藏组件 </el-checkbox>
|
52
|
+
<el-checkbox v-model="widget.options.hideLabel">隐藏标签 </el-checkbox>
|
53
|
+
<el-checkbox v-model="widget.options.isAdd">可新增 </el-checkbox>
|
54
|
+
<el-checkbox v-model="widget.options.isDelete">可删除 </el-checkbox>
|
55
|
+
</el-form-item>
|
56
|
+
|
57
|
+
<el-form-item label="校验">
|
58
|
+
<el-checkbox v-model="widget.options.required">必填</el-checkbox>
|
59
|
+
</el-form-item>
|
60
|
+
</el-collapse-item>
|
4
61
|
</div>
|
5
62
|
</template>
|
6
63
|
|
7
64
|
<script>
|
65
|
+
import Draggable from "vuedraggable";
|
66
|
+
import { configComponent } from "../mixins";
|
67
|
+
import CodeEditor from "ui/CodeEditor/index.vue";
|
8
68
|
export default {
|
9
|
-
|
10
|
-
|
69
|
+
components: {
|
70
|
+
Draggable,
|
71
|
+
CodeEditor
|
11
72
|
},
|
12
|
-
|
73
|
+
props: {},
|
74
|
+
mixins: [configComponent],
|
13
75
|
mounted() {},
|
14
|
-
methods: {
|
76
|
+
methods: {
|
77
|
+
handleAddData() {
|
78
|
+
let defaultValue = JSON.parse(this.widget.options.defaultValue || "[]");
|
79
|
+
let dic = {};
|
80
|
+
this.widget.options.columns.forEach(item => {
|
81
|
+
if (item.type === "grid") {
|
82
|
+
for (let i = 0; i < item.options.columns.length; i++) {
|
83
|
+
const element = item.options.columns[i];
|
84
|
+
for (let j = 0; j < element.list.length; j++) {
|
85
|
+
const element2 = element.list[j];
|
86
|
+
dic[element2.model] = element2.options.defaultValue;
|
87
|
+
}
|
88
|
+
}
|
89
|
+
} else {
|
90
|
+
dic[item.model] = item.options.defaultValue;
|
91
|
+
}
|
92
|
+
});
|
93
|
+
defaultValue.push(dic);
|
94
|
+
this.widget.options.defaultValue = JSON.stringify(defaultValue, null, 2);
|
95
|
+
}
|
96
|
+
}
|
15
97
|
};
|
16
98
|
</script>
|
17
99
|
|
18
|
-
<style lang="scss" scoped></style>
|
100
|
+
<style lang="scss" scoped></style>
|
@@ -1,18 +1,119 @@
|
|
1
1
|
<template>
|
2
|
-
<div>
|
3
|
-
|
2
|
+
<div class="component-list">
|
3
|
+
<div
|
4
|
+
v-for="(column, columnIndex) in dataModel"
|
5
|
+
class="tableH5-list"
|
6
|
+
:key="`tableH5_${columnIndex}`"
|
7
|
+
>
|
8
|
+
<div
|
9
|
+
v-for="(element, elementIndex) in widget.options.columns"
|
10
|
+
class="tableH5-list-item"
|
11
|
+
:key="`tableH5_${columnIndex}_${element.key}`"
|
12
|
+
>
|
13
|
+
<generate-form-item
|
14
|
+
style="flex:1;"
|
15
|
+
:widget="element"
|
16
|
+
:model.sync="
|
17
|
+
element.type === 'grid' && !element.options.isEntity
|
18
|
+
? column
|
19
|
+
: column[element.model]
|
20
|
+
"
|
21
|
+
:models="models"
|
22
|
+
:pModel="
|
23
|
+
pModel
|
24
|
+
? `${pModel}.${columnIndex}`
|
25
|
+
: `${widget.model}.${columnIndex}`
|
26
|
+
"
|
27
|
+
:config="config"
|
28
|
+
:slotKeys="slotKeys"
|
29
|
+
:componentsData="componentsData"
|
30
|
+
>
|
31
|
+
<template v-for="name in slotKeys" :slot="name">
|
32
|
+
<slot :name="name" />
|
33
|
+
</template>
|
34
|
+
</generate-form-item>
|
35
|
+
<div
|
36
|
+
v-if="
|
37
|
+
widget.options.isDelete &&
|
38
|
+
elementIndex === 0 &&
|
39
|
+
columnIndex >= widget.options.deleteIndex
|
40
|
+
"
|
41
|
+
class="actions"
|
42
|
+
>
|
43
|
+
<el-button
|
44
|
+
type="danger"
|
45
|
+
@click.native.prevent="dataModel.splice(columnIndex, 1)"
|
46
|
+
>{{ widget.options.deleteButtonText }}</el-button
|
47
|
+
>
|
48
|
+
</div>
|
49
|
+
</div>
|
50
|
+
</div>
|
51
|
+
|
52
|
+
<div v-if="widget.options.isAdd" style="text-align: center;">
|
53
|
+
<el-button
|
54
|
+
type="text"
|
55
|
+
:disabled="widget.options.disabled"
|
56
|
+
@click="handleTableAdd"
|
57
|
+
>{{ widget.options.addButtonText }}</el-button
|
58
|
+
>
|
59
|
+
</div>
|
4
60
|
</div>
|
5
61
|
</template>
|
6
62
|
|
7
63
|
<script>
|
64
|
+
import { itemsComponent, eventMixin } from "../mixins/index";
|
65
|
+
import GenerateFormItem from "../../GenerateFormItem.vue";
|
8
66
|
export default {
|
67
|
+
components: { GenerateFormItem },
|
68
|
+
mixins: [itemsComponent, eventMixin],
|
69
|
+
props: ["models", "prop", "slotKeys", "componentsData"],
|
9
70
|
data() {
|
10
71
|
return {};
|
11
72
|
},
|
12
|
-
|
13
|
-
|
14
|
-
|
73
|
+
methods: {
|
74
|
+
handleTableAdd() {
|
75
|
+
let dic = {};
|
76
|
+
const initData = (list, data) => {
|
77
|
+
for (const item of list) {
|
78
|
+
if (item.type === "grid") {
|
79
|
+
if (item.options.isEntity) data[item.model] = {};
|
80
|
+
for (const column of item.options.columns) {
|
81
|
+
initData(
|
82
|
+
column.list,
|
83
|
+
item.options.isEntity ? data[item.model] : data
|
84
|
+
);
|
85
|
+
}
|
86
|
+
} else {
|
87
|
+
data[item.model] = item.options.defaultValue;
|
88
|
+
}
|
89
|
+
}
|
90
|
+
};
|
91
|
+
initData(this.widget.options.columns, dic);
|
92
|
+
this.dataModel.push(dic);
|
93
|
+
}
|
94
|
+
}
|
15
95
|
};
|
16
96
|
</script>
|
17
97
|
|
18
|
-
<style lang="scss" scoped
|
98
|
+
<style lang="scss" scoped>
|
99
|
+
.component-list {
|
100
|
+
background: #fff;
|
101
|
+
|
102
|
+
.tableH5-list {
|
103
|
+
.tableH5-list-item {
|
104
|
+
width: 100%;
|
105
|
+
}
|
106
|
+
.tableH5-list-item:nth-child(1) {
|
107
|
+
display: flex;
|
108
|
+
> div:first-child {
|
109
|
+
flex: 1;
|
110
|
+
margin-right: 10px;
|
111
|
+
}
|
112
|
+
}
|
113
|
+
}
|
114
|
+
|
115
|
+
.footer {
|
116
|
+
text-align: center;
|
117
|
+
}
|
118
|
+
}
|
119
|
+
</style>
|
@@ -54,6 +54,8 @@
|
|
54
54
|
|
55
55
|
<script>
|
56
56
|
import { itemsComponent, eventMixin } from "../mixins/index";
|
57
|
+
import appConfig from "../../config/index";
|
58
|
+
|
57
59
|
export default {
|
58
60
|
mixins: [itemsComponent, eventMixin],
|
59
61
|
data() {
|
@@ -65,7 +67,7 @@ export default {
|
|
65
67
|
computed: {
|
66
68
|
uploadUrl() {
|
67
69
|
if (this.widget.options.remote.open) {
|
68
|
-
const info = sessionStorage.getItem(
|
70
|
+
const info = sessionStorage.getItem(appConfig.storageKeys.oauthConfig);
|
69
71
|
let baseUrl = "";
|
70
72
|
if (info) baseUrl = JSON.parse(info).baseUrl;
|
71
73
|
const func = this.config.network[this.widget.options.remote.api];
|
@@ -171,6 +171,7 @@ import {
|
|
171
171
|
baseConfig
|
172
172
|
} from "./custom/config";
|
173
173
|
import generateCode from "./util/generateCode.js";
|
174
|
+
import appConfig from "./config/index";
|
174
175
|
import { deepClone } from "./util/index";
|
175
176
|
|
176
177
|
export default {
|
@@ -314,7 +315,10 @@ export default {
|
|
314
315
|
token: this.oauthConfig.token,
|
315
316
|
baseUrl: this.oauthConfig.baseUrl
|
316
317
|
};
|
317
|
-
sessionStorage.setItem(
|
318
|
+
sessionStorage.setItem(
|
319
|
+
appConfig.storageKeys.oauthConfig,
|
320
|
+
JSON.stringify(oauthInfo)
|
321
|
+
);
|
318
322
|
} else if (this.oauthConfig.oauth) {
|
319
323
|
// 模拟授权认证流程
|
320
324
|
this.axios({
|
@@ -327,7 +331,10 @@ export default {
|
|
327
331
|
token: res.data,
|
328
332
|
baseUrl: this.oauthConfig.baseUrl
|
329
333
|
};
|
330
|
-
sessionStorage.setItem(
|
334
|
+
sessionStorage.setItem(
|
335
|
+
appConfig.storageKeys.oauthConfig,
|
336
|
+
JSON.stringify(oauthInfo)
|
337
|
+
);
|
331
338
|
});
|
332
339
|
}
|
333
340
|
},
|
@@ -488,6 +495,7 @@ export default {
|
|
488
495
|
align-items: center;
|
489
496
|
height: 45px;
|
490
497
|
padding: 0 15px;
|
498
|
+
z-index: 99;
|
491
499
|
}
|
492
500
|
ul {
|
493
501
|
position: relative;
|
@@ -11,7 +11,7 @@ export default {
|
|
11
11
|
date: '日期选择器',
|
12
12
|
rate: '评分',
|
13
13
|
color: '颜色选择器',
|
14
|
-
select: '
|
14
|
+
select: '下拉选择器',
|
15
15
|
switch: '开关',
|
16
16
|
slider: '滑块',
|
17
17
|
text: '文字',
|
@@ -20,7 +20,7 @@ export default {
|
|
20
20
|
upload: '图片',
|
21
21
|
editor: '编辑器',
|
22
22
|
cascader: '级联选择器',
|
23
|
-
table: '
|
23
|
+
table: '子表格',
|
24
24
|
grid: '栅格布局',
|
25
25
|
tabs: '标签页',
|
26
26
|
divider: '分割线'
|
@@ -0,0 +1,88 @@
|
|
1
|
+
import axios from "axios";
|
2
|
+
import Log from "../util/Log";
|
3
|
+
import appConfig from "../config/index";
|
4
|
+
import { Notification } from "element-ui";
|
5
|
+
|
6
|
+
export const init = baseConfig => {
|
7
|
+
// 创建axios实例
|
8
|
+
const Axios = axios.create({
|
9
|
+
baseURL: baseConfig.baseUrl,
|
10
|
+
timeout: 60000 // 请求超时时间
|
11
|
+
// withCredentials: true, //允许携带cookie
|
12
|
+
});
|
13
|
+
|
14
|
+
// 添加请求拦截器
|
15
|
+
Axios.interceptors.request.use(
|
16
|
+
config => {
|
17
|
+
const info = sessionStorage.getItem(appConfig.storageKeys.oauthConfig);
|
18
|
+
if (info) {
|
19
|
+
const oauthInfo = JSON.parse(info);
|
20
|
+
config.baseURL = oauthInfo.baseUrl;
|
21
|
+
config.headers["Authorization"] = oauthInfo.token;
|
22
|
+
}
|
23
|
+
if (baseConfig.headers) {
|
24
|
+
config.headers = Object.assign(config.headers, baseConfig.headers);
|
25
|
+
}
|
26
|
+
return config;
|
27
|
+
},
|
28
|
+
error => {
|
29
|
+
Promise.reject(error);
|
30
|
+
}
|
31
|
+
);
|
32
|
+
|
33
|
+
// 添加响应拦截器
|
34
|
+
Axios.interceptors.response.use(
|
35
|
+
response => {
|
36
|
+
const code = response.status;
|
37
|
+
if (code < 200 || code > 300) {
|
38
|
+
Notification.error({
|
39
|
+
title: response.message
|
40
|
+
});
|
41
|
+
return Promise.reject("error");
|
42
|
+
}
|
43
|
+
|
44
|
+
const dataCode = response.data.code;
|
45
|
+
if (dataCode && dataCode !== 200) {
|
46
|
+
Notification.error({
|
47
|
+
title: response.data.message
|
48
|
+
});
|
49
|
+
return Promise.reject("error");
|
50
|
+
}
|
51
|
+
|
52
|
+
if (baseConfig.debug) {
|
53
|
+
Log.prettyPrimary("Request Url:", response.request.responseURL);
|
54
|
+
Log.prettySuccess("Request Res:", response);
|
55
|
+
}
|
56
|
+
|
57
|
+
return response.data;
|
58
|
+
},
|
59
|
+
error => {
|
60
|
+
let code = 0;
|
61
|
+
try {
|
62
|
+
code = error.response.data.status;
|
63
|
+
} catch (e) {
|
64
|
+
if (error.toString().indexOf("Error: timeout") !== -1) {
|
65
|
+
Notification.error({
|
66
|
+
title: "网络请求超时",
|
67
|
+
duration: 5000
|
68
|
+
});
|
69
|
+
return Promise.reject(error);
|
70
|
+
}
|
71
|
+
}
|
72
|
+
if (code) {
|
73
|
+
const errorMsg = error.response.data.message;
|
74
|
+
Notification.error({
|
75
|
+
title: errorMsg || "未知错误",
|
76
|
+
duration: 5000
|
77
|
+
});
|
78
|
+
} else {
|
79
|
+
Notification.error({
|
80
|
+
title: "接口请求失败",
|
81
|
+
duration: 5000
|
82
|
+
});
|
83
|
+
}
|
84
|
+
return Promise.reject(error);
|
85
|
+
}
|
86
|
+
);
|
87
|
+
return Axios;
|
88
|
+
};
|
@@ -75,7 +75,7 @@
|
|
75
75
|
.draggable-list {
|
76
76
|
min-height: 52px;
|
77
77
|
background-color: #fff;
|
78
|
-
|
78
|
+
border: 1px dashed rgba(170, 170, 170, 0.7);
|
79
79
|
}
|
80
80
|
|
81
81
|
.widgetForm {
|
@@ -150,7 +150,7 @@
|
|
150
150
|
}
|
151
151
|
|
152
152
|
.value {
|
153
|
-
color:
|
153
|
+
color: $color-parimary;
|
154
154
|
cursor: pointer;
|
155
155
|
}
|
156
156
|
}
|