tianheng-ui 0.1.68 → 0.1.69
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/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
|
}
|